Как изменить форму массива, содержащего данные изображения

У меня есть 4554 изображения в моем массиве numpy X_train с формой массива следующим образом.

print(np.shape(X_train))
(4554,) # TOtal numbe of images
X_train[0].shape
(120, 120, 4) # Each image is 120x120 with 4 channels.

Теперь я хочу преобразовать массив в (4554, 120, 120, 4), чтобы при печати

print(np.shape(X_train)

Это дает мне форму (4554, 120, 120, 4) вместо (4554,).

Я попробовал следующий метод изменения формы, но он дал мне ошибку.

X_train=X_train.reshape((X_train.shape[0],X_train[0].shape))

Ошибка: TypeError: объект "кортеж" не может быть интерпретирован как целое число

0
0
669
1

Ответы 1

Вы ищете метод numpy.stack ().

Если у вас есть список трехмерных матриц, вы можете сделать четырехмерную матрицу следующим образом:

numpy.stack(your_list_of_training_data, axis=0)

См. Документацию здесь для объяснения: https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.stack.html

Я использовал стек, но он не работает, поскольку в нем говорится, что все входные массивы должны иметь одинаковую форму.

Abdul Karim Khan 26.10.2018 06:10

Похоже, что некоторые из ваших изображений в наборе данных не 120x120, и если это так, я не уверен, зачем вам нужен 4D-массив. Какая здесь главная цель? Как вы думаете, зачем вам нужен массив 4D np?

Capn Jack 26.10.2018 17:22

Другие вопросы по теме