我有一个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) 我怎么能这样做?
答案 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]]])