我在使用多维向量作为多维向量的索引时遇到问题。假设我有 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 的数组。 tuple(INDICES) 会给我一个长元组,所以 C[tuple(INDICES)] 不起作用。有没有一种干净的方法可以做到这一点,或者我需要迭代行吗?
最佳答案
如果将 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])
关于python - 多维数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19891101/