使用matplotlib imshow在for循环中显示numpy数组

Cec*_*lia 4 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
Run Code Online (Sandbox Code Playgroud)

我想在每次迭代时显示数组,但是imshow()不起作用,它只是在循环终止后显示图像.

PS.我正在使用Ipython笔记本

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

奇怪的是,如果我尝试使用标准的python提示执行此示例(http://matplotlib.org/examples/animation/dynamic_image2.html),一切正常,而在Ipython笔记本上它不起作用.谁能解释我为什么?

笔记:

也许我过分简化了我的代码;

我正在研究森林火灾模型,数组是一个填充0 =空站点,1 =树,2 =火的网格.

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

  1. 在随机选择的站点上放置一棵树,如果该站点是空闲的,则种植树
  2. 一棵树以概率f点燃

我想使用色彩图显示数组,以可视化我的模型的演变

reb*_*sin 11

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
Run Code Online (Sandbox Code Playgroud)

  • 必需的导入语句:`from matplotlib.pyplot import imshow,show` (2认同)