2013-11-28 63 views
1

我試圖使用索引數組獲取ndarray的值。使用索引數組返回「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))] 

應該返回我想要的,但我得到`索引超出限制的錯誤'。

我期望的輸出是:

[2,3] 
+0

哎呀! YEPP。抱歉 – Cupitor

+1

您在'b'的初始化過程中出現語法錯誤,並且不清楚'coord'是什麼。 – user2357112

+0

@ user2357112,謝謝 – Cupitor

回答

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])