我有一个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()不起作用,它只是在循环终止时显示图像。
PS。我使用的是Ipython笔记本
我在网上发现了不同的东西,但它们都没有在我的电脑上运行(例如我尝试使用matplotlib的动画模块)
奇怪的是,如果我尝试使用标准的python提示符执行此示例(http://matplotlib.org/examples/animation/dynamic_image2.html)一切正常,而在Ipython笔记本上它不起作用。谁能解释我为什么?
备注:
也许我过度简化了我的代码;
我正在使用森林火灾模型,数组是一个填充0 =空站点的网格,1 =树,2 =火。
在每个时间步骤(迭代):
我想使用色彩图显示数组,以显示模型的演变
答案 0 :(得分:9)
imshow(a)
会将数组a的值绘制为像素值,但不会显示该图。要在for循环的每次迭代后查看图像,您需要添加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
答案 1 :(得分:0)
imshow
用于在图中显示图像。使用print
显示一个numpy数组:
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
for t in range(0,10):
print a
# ...