Ответ 1
То, что возвращается, называется структурированным ndarray, например, здесь: http://docs.scipy.org/doc/numpy/user/basics.rec.html. Это связано с тем, что ваши данные не являются однородными, т.е. Не все элементы имеют один и тот же тип: данные содержат обе строки (первые два столбца) и поплавки. Масштабы массивов должны быть однородными (см. здесь для объяснения).
Структурированные массивы "решают" это ограничение однородности, используя кортежи для каждой записи или строки, что причина, по которой возвращаемый массив равен 1D: одна серия кортежей, но каждый кортеж (строка) состоит из нескольких данных, поэтому вы можете рассматривайте его как строки и столбцы. Различные столбцы доступны как a['nameofcolumn']
, в вашем случае, например a['Julian_Day']
.
Причина, по которой он возвращает 2D-массив при удалении конвертеров для первых двух столбцов, заключается в том, что в этом случае genfromtxt
рассматривает все данные одного и того же типа и возвращается нормальный ndarray (по умолчанию тип float, но вы можете указать это с помощью аргумента dtype
).
EDIT. Если вы хотите использовать имена столбцов, вы можете использовать аргумент 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')