【问题标题】:Python: convert a 1-by-28-by-28 array to a 28-by-28 matrixPython:将 1×28×28 数组转换为 28×28 矩阵
【发布时间】:2015-07-22 17:14:54
【问题描述】:

我有一个灰度图像存储为 1×28×28 数组 (uint8),我希望使用 matplotlib 显示。

相关代码如下:

import matplotlib.pyplot as plt

image = get_image()
print image.shape    # prints (1, 28, 28)
plt.imshow(image)

此代码生成TypeError: Invalid dimensions for image data

为了与 imshow() 兼容,我需要将数组压缩为 28×28(删除冗余维度)或将 2D 矩阵(28×28)复制到 3(RGB)或 4( RGBA) 通道。

我的偏好是使用第一种方法,但是squeeze() 不会删除冗余维度。

如何将 1×28×28 数组转换为 28×28 矩阵?

【问题讨论】:

  • squeeze 返回压缩后的数组,不会修改你传入的数组

标签: python arrays numpy matplotlib


【解决方案1】:

您可以通过挤压或重塑:

 imshow(np.squeeze(image))


 imshow(image.reshape((28,28))

【讨论】:

  • 不过,如果图像是 1-by-something 或 something-by-1,则不太适用。
  • 使用reshape后,您不需要squeeze
  • @hpaulj,是的,这是一个错字。
【解决方案2】:
image = image[0]

很简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2017-12-28
    • 2019-09-25
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2020-02-11
    相关资源
    最近更新 更多