Создать 3D матрицу из генератора 2D матриц - PullRequest
0 голосов
/ 19 февраля 2019

Я использую pandas для чтения ряда .csv файлов.Каждый файл создаст 3x5 фрейм данных.

dtx = (pd.read_csv(f).values for f in get_filelist(datadirectory))

Я хочу объединить все данные из различных файлов, чтобы создать трехмерный массив (если у меня есть 10 файлов, то яхочу получить массив формы: 10x3x5 )

Я мог бы создать пустой список Python и добавить все массивы, найденные в dtx, используя цикл for, но мне хотелось быболее питоническое решение.Я пытался

np.concatenate([tf for tf in dtx])

, не имея желаемого эффекта.Как я могу объединить все данные, которые я прочитал из моих файлов .csv, в большой трехмерный массив?

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете добавить новое измерение к массивам и объединить их:

dtx = (pd.read_csv(f).values for f in get_filelist(datadirectory))
np.concatenate([tf[np.newaxis] for tf in dtx], axis=0)

Пример:

np.concatenate([tf[np.newaxis] for tf in (np.arange(4).reshape((2,2)) for i in range(3))], axis=0)
>> array([[[0, 1],
        [2, 3]],

       [[0, 1],
        [2, 3]],

       [[0, 1],
        [2, 3]]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...