То, что возвращается, называется структурированным ndarray , см., Например, здесь: http://docs.scipy.org/doc/numpy/user/basics.rec.html. Это потому, что ваши данные не являются однородными, то есть не все элементы имеют одинаковый тип: данные содержат оба строки (первые два столбца) и плавающие. Numpy массивы должны быть однородными (см. здесь для объяснения).
Структурированные массивы «решают» это ограничение однородности, используя кортежи для каждой записи или строки, поэтому возвращаемый массив является 1D: одна серия кортежей, но каждый кортеж (строка) состоит из нескольких данных, так что вы можете расцените это как строки и столбцы. Различные столбцы доступны как a['nameofcolumn']
, в вашем случае, например, a['Julian_Day']
.
Причина, по которой он возвращает двумерный массив при удалении преобразователей для первых двух столбцов, заключается в том, что в этом случае genfromtxt
относится ко всем данным одного типа, и возвращается нормальный ndarray (тип по умолчанию - float, но вы можете указать это с помощью аргумента dtype
).
РЕДАКТИРОВАТЬ : Если вы хотите использовать имена столбцов, вы можете использовать аргумент names
(и установить skip_header
только в три):
a2 = np.genfromtxt("input.txt", delimiter=',', skip_header=3, names = True, dtype = None,
usecols=[0, 1] + radii_indices, converters={0: date_conv, 1: time_conv})
вы можете сделать, например:
>>> a2['Dateddmmyyyy']
array(['06/03/2006', '06/03/2006', '18/03/2006', '19/03/2006',
'19/03/2006', '19/03/2006', '19/03/2006', '19/03/2006',
'19/03/2006', '19/03/2006'],
dtype='|S10')