多维数组的索引

时间:2013-11-10 14:48:48

标签: python numpy multidimensional-array indexing scipy

我使用多维向量作为多维向量的索引存在问题。假设我有C.ndim == idx.shape [0],那么我希望C [idx]给我一个单独的元素。请允许我用一个简单的例子来解释:

A = arange(0,10)
B = 10+A
C = array([A.T, B.T])
C = C.T
idx = array([3,1])

现在,C [3]给了我第三行,C [1]给了我第一行。 C [idx]然后会给我两行的vstack。但是,我需要得到C [3,1]。我如何实现给定的数组C,idx?

/编辑: 答案建议元组(idx)。这项工作非常适合单一的idx。但: 让我们把它提升到一个新的水平:说INDICES是一个向量,我垂直堆叠形状idx的数组。元组(INDICES)会给我一个长元组,所以C [元组(指数)]将不起作用。是否有一种干净的方法可以执行此操作,还是需要迭代行?

1 个答案:

答案 0 :(得分:2)

如果您将idx转换为tuple,则会将其解释为基本索引而非高级索引:

>>> C[3,1]
13
>>> C[tuple(idx)]
13

对于矢量案例:

>>> idx
array([[3, 1],
       [7, 0]])
>>> C[3,1], C[7,0]
(13, 7)
>>> C[tuple(idx.T)]
array([13,  7])
>>> C[idx[:,0], idx[:,1]]
array([13,  7])