使用索引数组返回'ndarray'的值

时间:2013-11-28 22:14:11

标签: python arrays numpy tuples

我正在尝试使用索引数组获取ndarray的值。

假设a是目标数组,b是索引数组。然后:

a = np.asarray([[[1,2,3]],[[2,3,4]],[[3,4,5]]])
b = np.asarray([[0,0,1],[0,0,2]])
print a[tuple(map(tuple, b))]

应该返回我想要的但是我得到“Index Out Of Bound Error”。

我期望的输出是:

[2,3]

1 个答案:

答案 0 :(得分:3)

IIUC,你想要a[tuple(b.T)]。使数字唯一,以便更容易验证:

>>> a = np.arange(9).reshape(3,1,3)
>>> b = np.asarray([[1,0,2],[2,0,0]])
>>> a
array([[[0, 1, 2]],

       [[3, 4, 5]],

       [[6, 7, 8]]])
>>> b
array([[1, 0, 2],
       [2, 0, 0]])
>>> a[1,0,2]
5
>>> a[2,0,0]
6
>>> a[tuple(b.T)]
array([5, 6])