2010-08-25 134 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