Я читаю файл, используя numpy.genfromtxt, который содержит столбцы как строк, так и числовых значений. Одна вещь, которую мне нужно сделать, это определить длину ввода. Все это прекрасно, если в каждый массив считывается более одного значения.
Но... если в результирующем массиве есть только один элемент, логика терпит неудачу. Я могу воссоздать пример здесь:
import numpy as np
a = np.array(2.3)
len (a) возвращает сообщение об ошибке:
TypeError: len() of unsized object
однако, если a имеет 2 или более элемента, len() ведет себя так, как и следовало ожидать.
import numpy as np
a = np.array([2.3,3.6])
len (a) возвращает 2
Мое беспокойство здесь в том, что если я использую какую-то странную обработку исключений, я не могу различить пустое место и длину = 1.
EDIT: @noskio предложил установить a = np.array([2.3]). Проблема в том, что фактический генезис a осуществляется с помощью numpy.genfromtxt. Код выглядит следующим образом:
import numpy as np
indata = np.genfromtxt(some_filename, names=True,dtype=None)
a = indata['one_col_headername']
В результате, если indata является только одной строкой в файле, a представляет собой массив 0-d.