从numpy数组中显示多个图像

时间:2017-04-19 11:59:36

标签: python arrays numpy matplotlib data-visualization

我有一个存储多个样本图像的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

2 个答案:

答案 0 :(得分:0)

您正在将(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

答案 1 :(得分:0)

根据@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)