Sto leggendo in un file usando numpy.genfromtxt che introduce colonne di stringhe e valori numerici. Una cosa che devo fare è rilevare la lunghezza dell'input. Questo va bene a condizione che ci sia più di un valore letto in ogni array.Come rilevare la lunghezza di una matrice numpy con un solo elemento?
Ma ... se c'è un solo elemento nell'array risultante, la logica ha esito negativo. Posso ricreare un esempio qui:
import numpy as np
a = np.array(2.3)
len (a) restituisce un errore che dice:
TypeError: len() of unsized object
Tuttavia, se una ha 2 o più elementi, len() si comporta come ci si aspetterebbe.
import numpy as np
a = np.array([2.3,3.6])
len (a) restituisce 2
La mia preoccupazione qui è, se uso un po 'strana la gestione delle eccezioni, non riesco a distinguere tra un essere vuoto e una con lunghezza = 1.
EDIT: @noskio ha suggerito di impostare a = np.array ([2.3]). Il problema è che la vera genesi di a è usando numpy.genfromtxt. Il codice è simile:
import numpy as np
indata = np.genfromtxt(some_filename, names=True,dtype=None)
a = indata['one_col_headername']
Di conseguenza, se Indata è solo una riga nel file, a è un array di 0-d.
'matrice ([2])' è un array con un elemento e 1 dimensione . 'array (2)' è un array con zero rank o zero dimensions. – endolith