Python 使用matplotlib imshow在for循环中显示numpy数组
我有一个numpy数组,其元素在for循环中更新:Python 使用matplotlib imshow在for循环中显示numpy数组,python,arrays,animation,numpy,matplotlib,Python,Arrays,Animation,Numpy,Matplotlib,我有一个numpy数组,其元素在for循环中更新: a = np.array([[1,2,3],[4,5,6],[7,8,9]]) for t in range(0,10): imshow(a) for i in range(0,a.shape[0]): for j in range(0,a.shape[1]): a[i][j] += 1 我想在每次迭代时显示数组,但imshow()不起作用,它只在循环终止后显示图像 另外,我用的是I
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
for t in range(0,10):
imshow(a)
for i in range(0,a.shape[0]):
for j in range(0,a.shape[1]):
a[i][j] += 1
我想在每次迭代时显示数组,但imshow()不起作用,它只在循环终止后显示图像
另外,我用的是Ipython笔记本
我在网上找到了不同的东西,但没有一个能在我的计算机上工作(例如,我尝试使用matplotlib的动画模块)
奇怪的是,如果我尝试使用标准python提示符执行这个示例(),一切都正常,而在Ipython笔记本上则不正常。谁能解释一下原因吗
注意事项:
也许我把代码过于简化了
我正在研究一个森林火灾模型,这个数组是一个网格,里面填充了0=空站点,1=树,2=火
在每个时间步(迭代):
imshow(a)
将阵列a的值绘制为像素值,但不会显示绘图。要在for循环的每次迭代后查看图像,需要添加show()
这应该满足您的要求:
from matplotlib.pyplot import imshow, show
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
for t in range(0,10):
imshow(a)
show()
for i in range(0,a.shape[0]):
for j in range(0,a.shape[1]):
a[i][j] += 1
只是一个旁注,为什么不做一些类似于
a+=np.ones(a.shape)
?是的,我可以这样做,但我写下这个数组和这个for循环只是为了解释我的问题。这不是我正在处理的实际代码:)必需的导入语句:from matplotlib.pyplot import imshow,show