Нам нужно переставить оси, и для того же мы можем использовать np.transpose
-
H,W = 32,32 # image dimensions
img_0 = X[0].reshape(3,H,W).transpose(1,2,0)
Если у вас есть массив изображений, хранящихся в строках в массиве 2D
, т.е. первая строка обозначает X[0]
, вторая строка X[1]
и т. Д., Мы можем получить обратно все изображения, и это будет массив 4D
, например:
img_all = X.reshape(-1,3,H,W).transpose(0,2,3,1)
Чтобы проверить вещи, давайте создадим минимальный настройка:
# This is what we want as final output
In [46]: a = np.arange(18).reshape(2,3,3)
In [52]: a
Out[52]:
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]]])
In [47]: H,W = 2,3 # img dimensions
# This is what we have
In [63]: b = np.hstack([a[...,i].ravel() for i in range(3)])
In [64]: b
Out[64]:
array([ 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14,
17])
# Check if the proposed soln gives us "a" back
In [51]: np.allclose(a, b.reshape(3,H,W).transpose(1,2,0))
Out[51]: True