Estoy leyendo en un archivo usando numpy.genfromtxt que trae columnas de ambas cadenas y valores numéricos. Una cosa que tengo que hacer es detectar la longitud de la entrada. Todo esto está bien, siempre que haya más de un valor leído en cada conjunto.¿Cómo se detecta la longitud de una matriz numpy con un solo elemento?
Pero ... si solo hay un elemento en la matriz resultante, la lógica falla. Puedo recrear un ejemplo aquí:
import numpy as np
a = np.array(2.3)
len (a) devuelve un error que dice: Sin embargo
TypeError: len() of unsized object
, si A tiene 2 o más elementos, len() se comporta como cabría esperar.
import numpy as np
a = np.array([2.3,3.6])
len (a) devuelve 2
Mi preocupación aquí es, si uso un poco de manejo de excepciones extraño, no puedo distinguir entre un ser vacío y una longitud que tiene = 1.
EDITAR: @noskio sugirió establecer a = np.Array ([2.3]). El problema es que la génesis real de a es mediante el uso de numpy.genfromtxt. El código es el siguiente:
import numpy as np
indata = np.genfromtxt(some_filename, names=True,dtype=None)
a = indata['one_col_headername']
Como resultado, si INDATA es sólo una fila en el archivo, a es una matriz 0-d.
'array ([2])' es una matriz con un elemento y 1 dimensión . 'array (2)' es una matriz con cero rango o cero dimensiones. – endolith