我有一个 numpy 数组,其中包含 CIFAR10 数据集中的所有图像:
(50000, 3072)
我从中取出一个数组,它的形状是(3072,)
然后我尝试将其转换为 RGB 图像
.reshape(32, 32, 3)
但是当我将它传递给 plt.show() 时,它显示类似 的内容
我不知道为什么它不能正确显示图像,我也尝试过
.reshape(3, 32, 32)
但它在绘图时给出 TypeError: Invalid shape (3, 32, 32) for image data
如何正确地 reshape 它?
最佳答案
您应该尝试 np.swapaxes()
获取有效的形状,以便 plt.imshow()
接受。
import numpy as np
dd = np.array([1]*3072).reshape(3, 32, 32)
dd1 = np.swapaxes(dd, 0, 2)
尝试 plt.imshow(dd1)
看看会发生什么。 (使用您自己的数据):p
首先,您应该使用 (3, 32, 32) reshape ,这是由数据的顺序决定的。
然后你必须显示 reshape 图像,但 plt.imshow()
只接受形状为 (M, N) 或 (M, N, 3) 或 (M, N, 4),因此您现在必须交换轴,因为 reshape 后的数据为 (3, 32, 32)。详情见plt.imshow和 here
关于python - 无法将 numpy 数组 reshape 为 RGB 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63705615/