2013-06-22 10 views
0

이 질문을보고 있는데 : Efficient thresholding filter of an array with numpy다차원 NumPy 배열에 대해 부울 인덱스 배열을 만드는 방법은 무엇입니까?

비슷한 문제가 있지만 여러 좌표와 값이 NumPy 배열의 행에 저장되는 2 차원 배열이 있습니다. 위 질문 에서처럼 비슷한 필터링을 어떻게 할 수 있습니까?

>>> A.shape 
(4269862, 5) 

>>> A[0] 
array([ 2.27011719e+02, 0.00000000e+00, 2.88134766e+02, 
     2.00000000e+00, 7.69880000e+04], dtype=float32) 

을 그리고이 값은 X, Y, Z 및 값 1과 값 2에 해당합니다

내 데이터는 다음과 같습니다. 내가 원하는 것은 효율적으로 예를 들어 얻는 것입니다. 모든 행은 300 - 400, X는 200 - 250, Z는 200 - 300입니다.

idx = ((A[:, 0] > 300) & (A[:, 0] < 400) & 
     (A[:, 1] > 200) & (A[:, 1] < 250) & 
     (A[:, 2] > 200) & (A[:, 2] < 300)) 

print A[idx] 
# this should give your array rows where idx is True 

당신이 테스트 할 수 있습니다 :

답변

2

당신은 모든 조건이 충족 될 때 true가됩니다 부울 마스크를 만들 수 있습니다

A = np.random.uniform(150, 500, (200, 5)).astype('i') 
idx = ((A[:, 0] > 300) & (A[:, 0] < 400) & 
     (A[:, 1] > 200) & (A[:, 1] < 250) & 
     (A[:, 2] > 200) & (A[:, 2] < 300)) 
print A[idx] 
#[[339 292 231 211 474] 
# [371 252 310 281 256] 
# [337 263 471 159 397] 
# [361 299 383 250 206] 
# [360 278 328 194 453] 
# [360 258 205 245 427] 
# [339 286 331 175 418]] 
+0

감사를, A는 [: 0] 뭔가했다 알아낼 수 없었다. – Harriv

관련 문제