2017-05-03 18 views
-1

私は3D numpy配列を持っています[[[242,122,123],[111,30,12]]]私はマスクを作成したいと思います。最初の配列の場合は条件242> 122 + 123となります。条件はどこでnumpyで行うのですか?何かのようなもの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

この洞穴は私に何をする必要があるかのアイデアです。 最終結果は次のとおりです。 "mask [ (image [:,:、2]/255.0> ar *(image [:,:、1]/255.0 + image [:,:0]/255.0))& (br *(np.maximum(image [:、:、0])/(image [:,:、2]/255.0 - np.maximum 255,255.0) ) ] = 255 "画像のサイズ:[:、:、1]、image [:,:0]) - np.minimum(image [:,:、1]、image [:,:0])) 。この洞窟私のプログラム28.5倍のスピードブースト:D –

関連する問題