问题描述
我有一个numpy数组,其中包含CIFAR10数据集中的所有图像:
(50000,3072)
我要从中取出一个数组,其形状为(3072,)
然后尝试通过将其转换为RGB图像
.reshape(32,32,3)
我不确定为什么无法正确显示图像,我也尝试过
.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.imshow和here