2011-03-03 172 views
5

根据docs numpy的默认行为是索引数组首先由行,然后按列:numpy的 - 二维数组索引

a = numpy.arange(6).reshape(3,2) 

[[0 1] 
[2 3] 
[4 5]] 

print a[0][1] # is 1 

我想指数采用几何导向,约定a[x][y]的阵列,如X-轴和y轴。如何在不修改阵列形状的情况下更改索引顺序,以便a[0][1]返回2?

+0

我借用了文档中的术语(请参阅链接):“矩阵表示法使用第一个索引来指示哪一行正在被选中,第二个索引用于指示哪一列被选中,这与面向几何学的约定相反人们通常认为第一个索引代表x位置(即,列),第二个代表y位置(即,行)的图像“ – armandino 2011-03-03 07:58:53

+0

没关系,正在想别的东西。 – NullUserException 2011-03-03 08:00:26

+3

就像一个说明,索引多维数组时,您应该使用符号a [i,j]而不是[i] [j]。我在我的机器上发现后者慢了2倍。 – JoshAdel 2011-03-03 12:55:36

回答

8

您可以编写a.T[0,1]以使用数组转置的索引,这是2D中的另一种方式。

+0

这是否会在每次使用此表示法访问时创建一个新的转置阵列? – armandino 2011-03-03 16:05:21

+2

'.T'仅创建原始数组的视图,因此您不复制数据。它应该是相对较快的。 – JoshAdel 2011-03-03 16:06:49

+0

明白了。再次感谢! – armandino 2011-03-03 16:11:27