在Matplotlib imsh中使用for循环显示NumPy数组

2024-04-24 00:07:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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()不起作用,它只是在循环结束后显示图像。

另外,我用的是Ipython笔记本

我在网上发现了不同的东西,但没有一个在我的电脑上运行(例如,我试图使用matplotlib的动画模块)

奇怪的是,如果我尝试使用标准的python提示符来执行这个示例(http://matplotlib.org/examples/animation/dynamic_image2.html),那么一切都可以正常工作,而在Ipython笔记本上则不行。有人能解释我为什么吗?

注意:

也许我把代码简单化了

我正在研究一个森林火灾模型,数组是一个网格,其中0=空站点,1=树,2=火。

在每个时间步骤(迭代):

  1. 一棵树被扔在一个随机选择的地点,如果地点是免费的,树被种植
  2. 树点燃的概率为

我想用一个彩色地图来显示我的模型的进化


Tags: in模型numpy元素formatplotlibipythonnp
1条回答
网友
1楼 · 发布于 2024-04-24 00:07:21

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

相关问题 更多 >