Как преобразовать массив 1D numpy (созданный с помощью метода .genfromtxt ()) в 2D-массив? - PullRequest
0 голосов
/ 26 апреля 2020

Я новичок в numpy и пытаюсь сгенерировать массив из файла CSV. Мне сообщили, что метод .genfromtxt хорошо работает при генерации массива и автоматическом обнаружении и присвоении dtypes. Формула, казалось бы, делала это без fl aws, пока я не проверил форму массива.

import numpy as np
taxi = np.genfromtxt("nyc_taxis.csv", delimiter=",", dtype = None, names = True)

taxi.shape

[out]: (89560,)

Мне кажется, это показывает, что мой набор данных теперь является одномерным массивом. Урок, над которым я работаю в классе, имеет конечный результат taxi.shape as (89560,15), но они использовали длинный, утомительный для l oop, а затем преобразовали определенные столбцы в float. Но я хочу попробовать учиться более эффективным способом.

Первые несколько строк массива:

array([(2016, 1, 1, 5, 0, 2, 4, 21.  , 2037,  52. , 0.8,  5.54, 11.65,  69.99, 1),
       (2016, 1, 1, 5, 0, 2, 1, 16.29, 1520,  45. , 1.3,  0.  ,  8.  ,  54.3 , 1),
       (2016, 1, 1, 5, 0, 2, 6, 12.7 , 1462,  36.5, 1.3,  0.  ,  0.  ,  37.8 , 2),
       (2016, 1, 1, 5, 0, 2, 6,  8.7 , 1210,  26. , 1.3,  0.  ,  5.46,  32.76, 1),
       (2016, 1, 1, 5, 0, 2, 6,  5.56,  759,  17.5, 1.3,  0.  ,  0.  ,  18.8 , 2),
       (2016, 1, 1, 5, 0, 4, 2, 21.45, 2004,  52. , 0.8,  0.  , 52.8 , 105.6 , 1),
       (2016, 1, 1, 5, 0, 2, 6,  8.45,  927,  24.5, 1.3,  0.  ,  6.45,  32.25, 1),
       (2016, 1, 1, 5, 0, 2, 6,  7.3 ,  731,  21.5, 1.3,  0.  ,  0.  ,  22.8 , 2),
       (2016, 1, 1, 5, 0, 2, 5, 36.3 , 2562, 109.5, 0.8, 11.08, 10.  , 131.38, 1),
       (2016, 1, 1, 5, 0, 6, 2, 12.46, 1351,  36. , 1.3,  0.  ,  0.  ,  37.3 , 2)],

. Итак, из результатов видно, что каждая строка имеет 15 запятых (то есть 15 столбцов), но форма говорит мне, что она только 89560 строк и без столбцов. Я читаю это неправильно? Есть ли способ, которым я могу преобразовать форму моего набора данных массива такси, чтобы отразить истинное количество столбцов (то есть 15), как они есть в файле CSV?

Любая помощь приветствуется

1 Ответ

1 голос
/ 27 апреля 2020

Вы можете использовать эту функцию для преобразования ваших структурированных данных в неструктурированные с вашим желаемым типом данных (при условии, что все поля имеют одинаковый тип данных, если нет, лучше сохранить их как структурированные):

import numpy.lib.recfunctions as rfn

taxi = rfn.structured_to_unstructured(taxi, dtype=np.float)
...