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