无法将numpy数组重塑为RGB图像

问题描述

我有一个numpy数组,其中包含CIFAR10数据集中的所有图像: (50000,3072)

我要从中取出一个数组,其形状为(3072,) 然后尝试通过将其转换为RGB图像 .reshape(32,32,3)

但是当我将其传递给plt.show()时,它会显示类似

enter image description here

我不确定为什么无法正确显示图像,我也尝试过 .reshape(3,32),但在绘制时给出TypeError: Invalid shape (3,32) for image data

如何正确重塑?

解决方法

您应该尝试np.swapaxes()来获得plt.imshow()接受的有效形状。

import numpy as np
dd = np.array([1]*3072).reshape(3,32,32)
dd1 = np.swapaxes(dd,2)

尝试plt.imshow(dd1)看看会发生什么。 (使用您自己的数据):p

首先,您应该使用(3,32,32)重塑形状,这取决于数据的顺序。

然后您必须显示重塑图像,但是plt.imshow()仅接受形状为(M,N)或(M,N,3)或(M,N,4)的数组,因此您必须现在交换轴,因为调整后的数据是(3,32,32)。详细信息,请参见plt.imshowhere