2017-05-03 2 views
-1

3D numpy 배열을 가지고 있습니다 [[[242,122,123],[111,30,12]]] 마스크를 만들고 싶습니다. 첫 번째 배열의 경우 조건은 242> 122 + 123이됩니다. 조건이 어딘지와 함께 할 수있는 방법이 있습니까? something like mask[a > b+c] = 1 여기서 a, b, c는 배열의 값입니다.Numpy에서 3d 배열을위한 2 차원 마스크 만들기

+1

예상되는 출력은 무엇입니까 (당신이 원하는 무엇인지에) 단지 추측입니다? – Divakar

+0

@Divakar이 경우 마스크는 242> 122 + 123이 거짓이지만 111> 30 + 12가 참이므로 [[0,1]]이어야합니다. 첫 번째 배열이 M 인 경우 그러면 마스크 [M [:, :, 0]> M [:, :, 1] + M [:, : 2] = 1이 작동합니다. 하지만 추가 조건을 추가하고 싶다면이 마스크와 같은 것을해야합니까? [cond1, cond2] = 1 또는 maks [cond1 and cond2] = 1? –

답변

0

In [134]: M=np.array([[[242,122,123],[111,30,12]]]) 
In [135]: M.shape 
Out[135]: (1, 2, 3) 
In [136]: M[:,:,0]>(M[:,:,1]+M[:,:,2]) 
Out[136]: array([[False, True]], dtype=bool) 
In [137]: M[_] 
Out[137]: array([[111, 30, 12]]) 
+0

이 동굴에는해야 할 일에 대한 아이디어가 있습니다. 최종 결과 : "마스크 [ (이미지 [:, :, 2]/255.0> ar * (이미지 [:, :, 1, 255.0 + 이미지 [:, : 0]/255.0)) 및 (br * (np.maximum (image [:,], [0, 255]) 이미지의 최대 크기 (이미지 [:, :, 2]/255.0 - np.maximum np.minimum (image [:, :, 1], image [:, : 0]))/255.0) ] = 255 " . 이 동굴 내 프로그램 28.5X 속도 향상 : D –

관련 문제