2012-08-01 3 views
4

내 질문에 기반 Fastest way to approximately compare values in large numpy arrays? 원하는대로 배열을 분할 할 방법을 찾고있었습니다. 정렬 된 배열 (2D, 하나의 열에 값으로 정렬 됨)이 있으며 여러 배열로 분할하려고합니다. 인덱스를 기준으로 길이가 같지 않지만 값이 같은 범위입니다. 내가 찾은 가장 가까운 질문은 Split array at value in numpy 이지만 조금 다른 것을하고 싶습니다. 말 I는 (예 1D)가 :다중 값으로 배열을 분할합니까?

[0.1, 3.5, 6.5, 7.9, 11.4, 12.0, 22.3, 24.5, 26.7, 29.9] 

및 I는 범위 [0,10) [10, 20) [20, 30]으로 분할 할 그래서

[0.1, 3.5, 6.5, 7.9] [11.4, 12.0] [22.3, 24.5, 26.7, 29.9] 

답변

4

1 차원된다

>>> A = array([[ 0.1, 0. ], 
       [ 3.5, 1. ], 
       [ 6.5, 2. ], 
       [ 7.9, 3. ], 
       [ 11.4, 4. ], 
       [ 12. , 5. ], 
       [ 22.3, 6. ], 
       [ 24.5, 7. ], 
       [ 26.7, 8. ], 
       [ 29.9, 9. ]]) 
>>> split_at = A[:, 0].searchsorted([10, 20]) 
>>> B = numpy.split(A, split_at) 
>>> B 
[array([[ 0.1, 0. ], 
     [ 3.5, 1. ], 
     [ 6.5, 2. ], 
     [ 7.9, 3. ]]), 
array([[ 11.4, 4. ], 
     [ 12. , 5. ]]), 
array([[ 22.3, 6. ], 
     [ 24.5, 7. ], 
     [ 26.7, 8. ], 
     [ 29.9, 9. ]])] 
,369 : 내가 제대로 질문을 이해하면 경우 예를 들어,도 2D에서 작동이이

>>> A = np.array([0.1, 3.5, 6.5, 7.9, 11.4, 12.0, 22.3, 24.5, 26.7, 29.9]) 
>>> split_at = A.searchsorted([10, 20]) 
>>> B = numpy.split(A, split_at) 

같이 수행 할 수 있습니다

+0

2D 배열의 경우, 적절한 열을 잘라낸 다음 그 위에 searchsorted를 사용하는 것처럼 보입니다. –

관련 문제