2017-02-14 3 views
3

У меня есть массив numpy размером 5000x32x32x3. Число 5000 - это количество изображений, и каждое изображение равно 32x32 по ширине и высоте и имеет цветные каналы 3.Измените матрицу в numpy

Теперь я хотел бы создать массив numpy формы 5000x3x32x32 таким образом, чтобы данные сохранялись. Что я имею в виду сохранения данных являются:

  1. Там должен быть 5000 точек данных в результирующем массиве
  2. 2-й размер (3) массива правильно определяет цветовой канал, т.е. всех элементов, второе измерение 0 принадлежат к красному каналу, второе измерение которого равно 1, принадлежат к зеленому каналу, второе измерение которого 2 принадлежит к синему каналу.

Простое изменение формы на np.reshape(data,(5000,3,32,32)) не будет работать, поскольку оно не сохранит каналы, а просто изменит данные в желаемую форму.

+1

Вы смотрели в: 'numpy.swapaxes' https://docs.scipy.org/doc /numpy/reference/generated/numpy.swapaxes.html. Это должно быть выполнено двумя транспозициями осей. –

+3

Фактически 'np.transpose (data, (0,3,1,2))' должен делать то, что вы хотите. –

+0

@Learningisamess вы должны написать как ответ .. – Aaron

ответ

3

Я думаю, что вы ищете перестановки осей, numpy.transpose может получить эту работу:

data = np.transpose(data, (0, 3, 1, 2)) 
+0

Большое спасибо. Это помогло! – Sarthak

Смежные вопросы