2013-09-24 3 views
3

2 개의 다차원 배열을 가지고 있으며 새로운 다차원 배열을 생성하기 위해 인덱스로 하나를 사용하고 싶습니다. 예를 들어다른 다차원 배열의 다차원 인덱스 배열을 사용하는 numpy

a = array([[4, 3, 2, 5], 
      [7, 8, 6, 8], 
      [3, 1, 5, 6]]) 

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

그래서에서의 첫 번째 배열 이들 요소 인덱스를 리턴하고, B의 첫 번째 어레이를 사용할. 출력을 다음과 같이 지정합니다.

array([[4,2],[8,8],[6,1]]) 

이것은 아마도 간단하지만 검색을 통해 답변을 찾을 수 없습니다. 감사.

답변

2

이 조금 까다 롭습니다하지만, 다음은 그것을 할 것입니다 :

>>> a[np.arange(3)[:, np.newaxis], b] 
array([[4, 2], 
     [8, 8], 
     [6, 1]]) 

당신은 인덱스에 필요한 행과 a 배열의 열 두 그래서 당신은 배열을 필요 당신의 b 배열에 맞게 같은 :

rows = np.array([[0, 0], 
       [1, 1], 
       [2, 2]]) 

그리고 a[rows, b]은 명확 후 무엇을 반환합니다. 위와 같이 동일한 결과를 얻을 수 있으며, 에 해당하는 np.arange(3)[:, np.newaxis]rows 배열로 바꿉니다.

+0

감사합니다. 위대한 일을했다. – cracka31

관련 문제