매우 큰 배열 (len> 1000000)에 대해 데이터의 조각 (배열 값을 기반으로)을 얻으려고합니다. 그 이유는 순수에이 일의 시작과 끝리스트는 1E6의 요소를 가지고있는 동안numpy에서 numpy.where와 비슷한 여러 차원의 배열을 비교하는 함수가 numpy에 있습니까?
vector=[1,2,3,4,5,6,7,8,9,10]
start=[1,4,9] # start and end lists have the same length
end=[2,7,9]
output=[[]]*len(start)
for indx1 in range(len(start)):
temp=[]
for indx2 in range(len(vector)):
if ((vector[indx2]>=start[indx1]) and (vector[indx2]<=end[indx1])):
temp.append(vector[indx2])
output[indx1]=temp
print output
벡터 목록은 일반적으로 25E + 6 요소가 있습니다 : 나는 순수 파이썬에서 할 노력하고있어에, 예를 들어, 다음 파이썬 코드를 참조하십시오 파이썬은 매우 느립니다.
numpy를 사용하여이 문제를 해결하기 위해 루프를 피하는 이유를 알고 있습니까? 시간에 대한
감사
'벡터'가 정렬됩니까? 그렇지 않다면, 그것을 다 치기 위해 상처를 줄 것인가 아니면 원래의 질서를 유지할 필요가 있는가? –
'start'와'end'에 의해 정의 된 간격은 정렬되고 중첩되지 않을까요? –
벡터의 순서는 유지되어야합니다. – Memolo