2014-09-12 44 views
1

我有一个numpy的数组,其元素在被更新的循环:显示numpy的阵列中的for循环使用matplotlib imshow

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()没有按” t工作,它只是在循环终止时显示图像。

ps。我使用的是IPython的笔记本

我在网上找到了不同的东西,但他们都不在我的电脑上工作(例如我尝试使用matplotlib的动画模块)

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

笔记:

也许我过于简单我的代码;

我正在使用森林火灾模型,数组是一个填充0 =空网站,1 =树,2 =火的网格。

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

  1. 树滴在随机选择的位点,并且如果网站是免费的树种
  2. 树的概率˚F
点燃

我想用一个颜色映射到我的可视化模式的演变

+0

只是一个侧面说明,你为什么不这样做'A + = np.ones(a.shape)'? – robbrit 2014-09-12 16:39:42

+1

是的,我可以做到这一点,但我写下这个数组和这个循环只是为了解释我的问题。这不是我正在处理的实际代码:) – Cecilia 2014-09-12 16:44:50

回答

5

imshow(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 
+0

必需的导入语句:'from matplotlib.pyplot import imshow,show' – StackG 2018-02-04 15:33:29

0

imshow为表示在剧情图像来显示阵列。使用print表现出numpy的数组:

a = np.array([[1,2,3],[4,5,6],[7,8,9]]) 

for t in range(0,10): 
    print a 

    # ... 
+0

谢谢,但我想用colorbar()等方式直观表示数组。在实际代码中,每个数组元素都有它的颜色。 也许我过分简化了我的代码。 – Cecilia 2014-09-12 16:48:47

+1

是的,你需要澄清数组应该如何显示。 – robbrit 2014-09-12 16:54:05