2014-02-05 67 views
0

我剛剛開始使用numpy,無法找到此問題的簡單解決方案。在numpy數組中訪問多個(行,列)組合

簡單的例子:

import numpy as np 

A = np.array([[1, 2], [-1, 5], [0, 12]]) 
x1 = (0, 0) 
x2 = (1, 1) 
x3 = (2, 0) 
A[x1] # 1 
A[x2] # 5 
A[x3] # 0 

我想以某種方式把我的元組X1,X2,X3成一個單一的對象,然後,我會使用索引答:我想這回[1,5,0] - 因此是標題,訪問numpy數組中的多個(行,列)組合。是否有捷徑可尋?

這是我已經試過:

A[[x1, x2, x3]] # IndexError 
A[(x1, x2, x3)] # IndexError 
A[x1, x2, x3] # IndexError 
A[np.array((x1, x2, x3))] # Not what I'm trying to do 

一種可能性是:

tuples = (x1, x2, x3) 
elems = [] 
for tup in tuples: 
    elems.append(A[tup]) 

B = np.array(elems) 
B # [1, 5, 0] as desired 

但是,有沒有辦法避免的循環?

回答

3
In [1357]: A[zip(x1,x2,x3)] 
Out[1357]: array([1, 5, 0])