我一直在尝试一切我可以让pyplot显示图像5倍。我一直得到这个错误…
这是我的代码
import matplotlib.pyplot as plt
import os.path
import numpy as np
'''Read the image data'''
# Get the directory of this python script
directory = os.path.dirname(os.path.abspath(__file__))
# Build an absolute filename from directory + filename
filename = os.path.join(directory, 'cat.gif')
# Read the image data into an array
img = plt.imread(filename)
'''Show the image data'''
# Create figure with 1 subplot
fig, ax = plt.subplots(1, 5)
# Show the image data in a subplot
for i in ax:
ax.imshow(img, interpolation='none')
# Show the figure on the screen
fig.show()
我敢肯定这与2D数组有关,但我真的想不出来。
我试
for i in ax:
ax[i].imshow(img, interpolation='none')
# Show the figure on the screen
fig.show()
但我只是得到:
IndexError:只有整数、切片(:
)、省略号(...
)、numpy.newaxis(None
)和整数或布尔数组才是有效的索引
4条答案
按热度按时间fnatzsnv1#
这是:
因为
I
不是索引。它是一个轴对象。第一种情况是错误的,因为即使你循环了这些项,你调用的是
ax
上的函数,而不是单个轴。执行以下操作:
pu3pd22g2#
只需在代码前的“ax.flatten()”之前添加此命令
gupuwyp23#
变量
axs
,如果包含多个轴,将是一个2D ndarray。例如,可以使用以下命令创建3行2列的子图:这个2D ndarray需要两个索引,要使它在循环中工作,需要一个索引。因此,它必须首先被展平才能有大小为(6,)的1D ndarray。
或者,如果您想保持2D,也可以这样做
rkkpypqq4#
你可以像下面这样检查斧头
如果你真想使用'i',那么就像这样使用enumerate()
“axs”是首选的,因为它是多个。
最后,您可以在下面测试