2012-11-20 7 views
2

나는NumPy와 사용자 정의 배열 요소 검색

Foo = 
array([[ 1, 2, 3], 
     [ 4, 5, 6], 
     [ 7, 8, 9], 
     [10, 11, 12]]) 

Bar = 
array([[0, 0, 1], 
     [1, 2, 3]]) 

가 나는 결국 같은 것을 지표로 바의 값을 사용하여 푸의 요소를 추출 할 차원 NumPy와 배열에서 특정 값을 추출하는 방법에 대한 질문이 있습니다 Bar과 동일한 모양의 2D 행렬/배열 Baz이 있습니다. Baz 대응의 i 번째 열은 Foo[(np.array(each j in Bar[:,i]),np.array(i,i,i,i ...))]

Baz = 
array([[ 1, 2, 6], 
     [ 4, 8, 12]]) 

내가하지만이 일을 더 우아한, NumPy와 틱 방법이 있는지 궁금 해서요 - 루프 중첩 몇 가지를 할 수 있습니다.

죄송합니다. 조금 복잡합니다. 더 설명 할 필요가 있으면 알려주세요.

감사합니다.

답변

2

당신은 행 인덱스 및 열 인덱스와 같은 배열 [0, 1, 2]Bar를 사용할 수 있습니다

# for easy copy-pasting 
import numpy as np 
Foo = np.array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [10, 11, 12]]) 
Bar = np.array([[0, 0, 1], [1, 2, 3]]) 

# now use Bar as the `i` coordinate and 0, 1, 2 as the `j` coordinate: 

Foo[Bar, [0, 1, 2]] 
# array([[ 1, 2, 6], 
#  [ 4, 8, 12]]) 

# OR, to automatically generate the [0, 1, 2] 

Foo[Bar, xrange(Bar.shape[1])] 
+0

당신을 감사합니다! 그것은 아름답게 작동합니다. 최대한 빨리 받아 들일 것입니다. – ejang