2011-08-11 3 views
0

두 개의 배열이 있습니다. 첫 번째 배열은 데이터 풀에 선택 영역의 시작과 끝을 포함하고, 두 번째 배열은 데이터 풀입니다.[a, b] 행을 사용하여 다른 배열을 데이터 [a : b]로 인덱싱하는 방법?

일반적인 생각은 첫 번째 데이터를 두 번째 데이터에서 추출하는 것이지만 numpy를 사용하여 데이터를 올바르게 처리하는 방법을 알지 못합니다.

나는 다음과 같은 해결책을 찾았지만 서투른 같습니다

relevant_data = datapool[np.arange(*selection[0])]] 

어떤 생각?

업데이트 : 색인 생성을 중첩하는 기능은 큰 장점입니다 (선택 항목의 하위 항목 가져 오기).

답변

6

사용 slice : slice()를 사용하는 것보다

In [1]: row = [4,7] 

In [2]: data = range(10000) 

In [3]: data[slice(*row)] 
Out[3]: [4, 5, 6] 
+0

감사합니다. 이것은 내가 원하는 것 같습니다. 슬라이스 표기법은 인덱싱을 중첩 할 수있게 해준다 (필자의 경우 유용하다). 나는 행을 푸는 비용에 대해 여전히 염려하고 있지만, 그것을 피하는 방법을 알지 못한다. – LBarret

4

더 간단한 솔루션은 좀 더 명시 적 때문에 쉽게 읽을 수 있습니다

row = [4, 7] 
data[row[0]:row[1]] 

입니다.

+0

고맙습니다. 파이썬의 선명도가 마음에 들지만 위와 같이 하위 인덱스 기능이 유용 할 것 같습니다. 아직도, 나는 퍼포먼스 차이가 큰지 알아보기 위해 솔루션을 "시간을 잰다". – LBarret

+0

@Lionel : 물론 당신은'data [selection [index, 0] : selection [index, 1]]'을 사용할 수 있습니다. –