2017-01-31 1 views
2

나는 정수 배열을가집니다.numpy.take 배열 요소 범위 파이썬

data = [10,20,30,40,50,60,70,80,90,100] 

배열에서 정수의 범위를 추출하고 더 작은 배열을 가져 오려고합니다.

data_extracted = [20,30,40] 

나는 numpy.take을 시도했다.

data = [10,20,30,40,50,60,70,80,90,100] 
start = 1 # index of starting data entry (20) 
end = 3  # index of ending data entry (40) 
data_extracted = np.take(data,[start:end]) 

나는 구문 오류가 numpy.take에 : 가리키는 얻을.

numpy.take을 사용하여 배열의 일부를 별도의 배열에 저장하는 더 좋은 방법이 있습니까?

+3

'data_extracted = data [1 : 3]'? – dfri

+0

(여기서 나는 start ... dfri

답변

3

목록을 직접 슬라이스 할 수 있습니다.

import numpy as np 
data = [10,20,30,40,50,60,70,80,90,100] 
data_extracted = np.array(data[1:4]) 

또한, 당신은 또 다른 목록에 데이터를 저장할 수 numpy.array를 사용할 필요가 없습니다 : 당신이 numpy.take를 사용하려는 경우, 당신은

data_extracted = data[1:4] 

그것을의 목록을 전달하는 두 번째 인수로 원하는 지표 :

import numpy as np 
data = [10,20,30,40,50,60,70,80,90,100] 
data_extracted = np.take(data, [1, 2, 3]) 

나는 numpy.take는 생각이 응용 프로그램에 필요한 생각하지 않습니다.

+0

그래서 numpy.take는 콜론 표기법으로 값의 범위를 허용하지 않습니까? 제 실제 시나리오에서는 256 개의 데이터 포인트를 선택 했으므로 .take를 사용하여보다 효율적으로 만들려고했습니다. –

+1

@SpencerH. 'data_extracted = np.take (data, range (1, 4))'는 위의 접근법의 명시 적 배열보다 더 좋을 수도있다 (' range (from, to)'->'[from, ..., to-1]')에 걸쳐 half-open 범위를 포함하는 정수 시퀀스를 생성합니다. – dfri

+0

@dfri 또 다른 좋은 옵션이 –

0

인덱스 범위를 얻으려면 슬라이스 만 사용해야하는데 멋진 인덱싱을위한 바로 가기로 사용되는 numpy.take은 필요하지 않습니다.

data_extracted = data[1:4]