2014-09-12 128 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