【问题标题】:numpy - 2d array indexingnumpy - 二维数组索引
【发布时间】:2011-07-07 20:57:34
【问题描述】:

根据docs 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 位置(即行)"
  • 没关系,在想别的事。
  • 请注意,在索引多维数组时,您应该使用符号 a[i,j] 而不是 a[i][j]。我在我的机器上发现后者慢了 2 倍。
  • @Josh 感谢您的提示。它看起来也更具可读性。

标签: python indexing numpy multidimensional-array


【解决方案1】:

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

【讨论】:

  • 每次我使用这个符号访问时,这是否会创建一个新的转置数组?
  • .T 仅创建原始数组的视图,因此您不会复制数据。应该比较快。
  • a.T[0,1] 会不会更好,因为它会省略中间数组,避免调用 getitem 例程两次?
猜你喜欢
  • 2020-07-30
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 2019-07-28
  • 2019-01-09
  • 2012-04-01
相关资源
最近更新 更多