2010-08-25 197 views
0

我有一個3-D數組ar。Python:矩陣和imshow的形狀()

print shape(ar) # --> (81, 81, 256) 

我想繪製這個數組。

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
for i in arange(256): 
    im1 = ax1.imshow(ar[:][:][i]) 
    plt.draw() 
    print i 

我收到此錯誤消息:

im1 = ax1.imshow(ar[:][:][i]) 
IndexError: list index out of range 

爲什麼會出現這種奇怪的消息?該圖的大小爲81 x 256,不像預期的81 x 81。但爲什麼?

回答

2

務必:

ar[:,:,i] 

語法ar[:]使得ar(片的所有元素)的副本,所以ar[:][:][i]語義上等同於ar[i]。這是一個81 * 256矩陣,因爲ndarrays是嵌套列表。

+0

然後我得到另一個錯誤:TypeError:列表索引必須是整數,而不是元組 – kame 2010-08-25 14:22:51

+1

@ kame:你在這裏沒有使用numpy嗎?如果不是,你應該是。具體來說,我認爲'ar'是列表的列表,而不是一個numpy數組。你可以用'ar = np.array(ar)'將它轉換成數組。 – katrielalex 2010-08-25 14:24:41