无法将 numpy 数组重塑为 RGB 图像
Unable to reshape numpy array to RGB image
我有一个 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
如何正确重塑它?
您应该尝试 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) 进行整形,这是由你的数据顺序决定的。
然后你必须显示整形图像,但 plt.imshow()
只接受形状为 (M, N) 或 (M, N, 3) 或 (M, N, 4) 的数组,所以你现在必须交换轴,因为重塑后的数据是 (3, 32, 32)。详情见plt.imshow and here
我有一个 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
如何正确重塑它?
您应该尝试 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) 进行整形,这是由你的数据顺序决定的。
然后你必须显示整形图像,但 plt.imshow()
只接受形状为 (M, N) 或 (M, N, 3) 或 (M, N, 4) 的数组,所以你现在必须交换轴,因为重塑后的数据是 (3, 32, 32)。详情见plt.imshow and here