【问题标题】:Displaying multiple images from a numpy array显示来自 numpy 数组的多个图像
【发布时间】:2017-04-19 11:59:35
【问题描述】:

我有一个存储多个样本图像的 numpy 数组 (data.npy)。我想查看/保存所有图像。我试过以下:

img_array=np.load('data.npy')
i = 0
while i < len(img_array):
   plt.imshow(img_array[i], cmap='gray')
   plt.show()
   i += 1

但这给出了一个错误:

TypeError: Invalid dimensions for image data

【问题讨论】:

  • 您拥有的是二进制文件,而不是数组。如何从中提取数据取决于创建文件时数据的存储方式。 img_array的形状是什么?
  • @ChrisMueller img_array 的形状是:(22, 4, 100, 100)

标签: python arrays numpy matplotlib data-visualization


【解决方案1】:

根据@John Zwinck 的回答,以下代码对我来说似乎工作正常。

In [12]: for idx, el in enumerate(img_array):
    ...:     plt.imshow(np.moveaxis(img_array[idx], 0, -1), cmap='gray')
    ...:

np.moveaxis 围绕数组的轴移动。这里它将原始数组中的第一个轴移动到最后一个轴。

In [13]: a[10].shape
Out[13]: (4, 100, 100)

In [14]: np.moveaxis(a[10], 0, -1).shape
Out[14]: (100, 100, 4)

【讨论】:

    【解决方案2】:

    您将 (4,100,100) 数组传递给 imshow() 但文档说它需要通道维度排在最后:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow

    所以使用moveaxis() 或rollaxis() 来改变维度的顺序:https://docs.scipy.org/doc/numpy/reference/generated/numpy.moveaxis.html

    【讨论】:

      猜你喜欢
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2015-06-02
      相关资源
      最近更新 更多