无法将 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