重塑包含图像数据的numpy数组

时间:2017-08-01 22:14:39

标签: python numpy

我有一个numpy数组: all_data =(10000,3072)其中数组中的每个单元格是32 * 32 * 3图像的数据。当单元格中的数据格式为:

np.transpose(np.reshape(image_data,(3, 32,32)), (1,2,0)) 

显示真实图像(使用plt.imshow或任何此类库) 。现在我想转换all_data,使all_data的形状为(10000,32,32,3) 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

你可以尝试这个,(同样的重塑过程,但保持第一个维度不变):

all_data.reshape(10000, 3, 32, 32).transpose(0,2,3,1)

实施例

all_data = np.arange(24).reshape(2,12)

目标重塑为(2,2,2,3):

all_data
# array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11],
#        [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])

重塑数据的一个元素:

all_data[0].reshape(3,2,2).transpose(1,2,0)
# array([[[ 0,  4,  8],
#         [ 1,  5,  9]],

#        [[ 2,  6, 10],
#         [ 3,  7, 11]]])

重塑所有这些:

all_data.reshape(2,3,2,2).transpose(0,2,3,1)[0]
# array([[[ 0,  4,  8],
#         [ 1,  5,  9]],

#        [[ 2,  6, 10],
#         [ 3,  7, 11]]])