Ошибка при преобразовании трехмерного массива в двумерный
Всем привет, ошибка возможно перед глазами, но до меня не доходит почему то. Мне нужно использовать массив для обучения, но т.к. он трехмерный, выдается ошибка:
ValueError: Found array with dim 3. Estimator expected <= 2.
Я предположил если сделаю из трехмерного двумерный массив, у меня всё получится. Решил это реализовать так:
import pandas as pd
import numpy as np
from numpy import array
import h5py
MOD = []
X = []
i = 0
i1 = 0
j = 0
j1 = 0
with h5py.File('D:\\PYTHON\\Dataset\\2018.01\\GOLD_XYZ_OSC.0001_1024.hdf5', 'r') as f:
x = f['X'][:1000000:500]
y = f['Y'][:1000000:500]
for i1 in range(len(x)):
for j1 in range(1024):
X[i1][j1] = x[i1][j1][0]
for i in range(len(x)):
for j in range(24):
if np.any(y[i,j] == 1):
MOD.append(j)
print (MOD)
Но выдается ошибка:
IndexError Traceback (most recent call last)
<ipython-input-210-f098d357d026> in <module>
17 for i1 in range(len(x)):
18 for j1 in range(1024):
---> 19 X[i1][j1] = x[i1][j1][0]
20
21 for i in range(len(x)):
IndexError: list index out of range
Вероятно что в "третьей проекции" хранится мнимая часть числа, она мне не нужна поэтому оставляю только одну плоскость (двумерный массив). Возможно я сам по себе неправильный метод выбрал, подскажите что делать?
Вот такого формата данные в датасете:
print (x.shape, y.shape)
(2000, 1024, 2) (2000, 24)
Ответы (1 шт):
Чтобы преобразовать трехмерный массив в двухмерный можно использовать np.reshape
>>> a = [[0,1,2],
[3,4,5],
[6,7,8],
[9,10,11]]
>>> np_a = np.array(a)
>>> np_a.shape
(4, 3)
>>> np_a.reshape(-1, 2).shape
(6, 2)