2014-11-16 4 views
2

파이썬 2.7로 다차원 numpy 배열의 데이터에 액세스하는 데 문제가 있습니다. 목표는 위치가 목록에 저장된 여러 값을 읽는 것입니다. 내가 원하는 무엇목록이있는 다차원 numpy 배열 인덱싱

import numpy as np 
matrix=np.ones((10,30,5)) 

positions=[] 
positions.append([1,2,3]) 
positions.append([4,5,6]) 

for i in positions: 
    print matrix[i] 

은 다음과 같습니다

print matrix[1,2,3] 

하지만 내가 얻을 :

print [matrix[1], matrix[2], matrix[3]] 

는 올바른 인덱스 나에게 힌트를 전해 주 시겠어요? 감사! indexing docs에서

답변

4

: 파이썬에서

, x[(exp1, exp2, ..., expN)]는 후자 가 전 단지 문법 설탕입니다 x[exp1, exp2,..., expN];에 해당합니다.

그래서, 대신에게 목록을 전달하는, matrix에 튜플을 통과 :

for i in positions: 
    print matrix[tuple(i)] 

리스트가 특정 인덱스에서 항목을 따기 위해 사용되는, 즉 index arrays :

>>> arr = np.random.rand(10) 
>>> arr 
array([ 0.56854322, 0.21189256, 0.72516831, 0.85751778, 0.29589961, 
     0.90989207, 0.26840669, 0.02999548, 0.65572606, 0.49436744]) 
>>> arr[[0, 0, 5, 1, 5]] 
array([ 0.56854322, 0.56854322, 0.90989207, 0.21189256, 0.90989207]) 
+0

첫 번째 대답 후 4 분. 나는 그것이 단순한 질문이라고 확신했지만, 단지 해결책이 될 수 없었다. 그것은 Scipy 문서에없는 것입니다. 감사합니다 Ashwini! – Kaioto

+0

@ 카이토 여기에서 다루었습니다. http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#indexing NumPy의 임시 튜토리얼은 현재 저에게 적합합니다. 잘. –

관련 문제