NumPy - 2D 数组索引

5
根据文档(链接),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?

我从文档中借用了术语(请参见链接):“矩阵表示法使用第一个索引来指示选择哪一行,第二个索引来指示选择哪一列。这与几何定向的图像约定相反,在图像中人们通常认为第一个索引代表x位置(即列),第二个代表y位置(即行)。” - armandino
没事,我想错了。 - NullUserException
3
注意,当索引多维数组时,应使用表示为a[i,j]的符号,而不是a[i][j]。在我的机器上,我发现后者比前者慢2倍。 - JoshAdel
@Josh 谢谢你的提示。这样看起来更易读了。 - armandino
1个回答

8

您可以写 a.T[0,1] 来使用数组的转置的索引,这些索引在二维中是相反的。


每次使用这种表示法访问时,它会创建一个新的转置数组吗? - armandino
2
.T 只是创建原始数组的视图,因此不会复制数据。它应该相对较快。 - JoshAdel
2
不使用a.T[0,1]更好吗?因为这样可以避免调用两次__getitem__例程,从而省略中间数组。 - Magellan88

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接