2017-03-13 1 views
0

행 인덱스 열 목록을 사용하여 요소를 추출 할 2D numpy 배열이있는 경우.브로드 캐스팅을 사용하여 2 차원 인덱스를 가진 2D numpy 배열에서 요소를 얻는 방법?

xy = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
idx = np.array([[0, 0], [1, 1], [2, 2]]) 

루프를위한 솔루션 :이 IDX는 튜플의 목록입니다하지만이 어디 해결책을 기대하지 않는 경우

print(elements) 
>> [1, 5, 9] 

나는 해결책을 발견 : 출력

elements = list() 
for i in idx: 
    elements.append(xy[idx[i][0], xy[idx[i][1]) 

먼저 idx를 튜플로 변환해야합니다.

+0

Numpy는 1d 인덱스에 대해 취할 수있는 방법이 있지만 배열을 수정하는 방법은 여전히 ​​생각하고 있습니까? (심지어 올바른 해결책이라면) – dranobob

+0

나는 이것이 중복으로 표시되었지만 링크 된 질문은 색인을 튜플로 변환한다는 것을 혼란 스럽다. (이것은 내가 피하려고하는 것이다). – dranobob

+0

만세, 대답을 찾았습니다. 이후 나는 여기에 대답을 추가 할 수 없습니다. 해결책은 그냥 슬라이싱을 사용하는 것입니다 : element = xy [[idx [:, 0], idx [:, 1]] – dranobob

답변

0
idy = zip(*idx) 
    output = xy[idy] 
+0

idx를 튜플 목록으로 변환하지 않습니까 (루프 사용)? – dranobob

+0

Zip [여기] (https://docs.python.org/3/library/functions.html#zip)에서 루프를 사용하고 있습니다. – dranobob

관련 문제