python - 无法将 numpy 数组 reshape 为 RGB 图像

标签 python numpy matplotlib reshape numpy-ndarray

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

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

但是当我将它传递给 plt.show() 时,它显示类似 enter image description here 的内容

我不知道为什么它不能正确显示图像,我也尝试过 .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.imshowhere

关于python - 无法将 numpy 数组 reshape 为 RGB 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63705615/

相关文章:

python - 在 Python 中计算 Pearson 相关性和显着性

python - 将整数日期时间转换为日期时间格式

python - Django:具有与客户端关联的唯一分机号,但与另一个客户端关联的相同分机号

python - 在 os.exec* 之后将输出重定向到文件

python - 多年的每一天的平均值

python - 从 matplotlib 中的轮廓获取坐标?

python - 在 Matplotlib 中删除楔形极坐标图周围的空间

python - 使用 sqlalchemy 进行连接压缩

python - 为什么我不能用 Python 将列表的第一个元素写入文本文件?

python - python中大数的求和产生最大参数