2017-04-24 17 views
0

私は形状(244,244,3)でnumpy配列を持っています。それぞれは、numpyの配列としてRGBイメージを保持します。それぞれのチャンネルから値を減算したい。Numpy配列で減算します

私は簡単にforループを使って行うことができますが、numpyでより速い方法があると仮定します。

アイデア?

多くのありがとう

+0

は私達にルーピーバージョンを表示しますか? – Divakar

+0

同じサイズの値の配列を減算していますか?その場合、 'array1 - array2'を実行することができます。そのように単純です。これが当てはまらない場合は、差し引きたい値の寸法を明確にすることができますか? – isosceleswheel

+0

その形状は、それがrgb画像であることを示唆している。 'each'へのあなたの参照は、同じ形をした他の人がいるということですか? – NaN

答えて

1

単純に3ベクトルを減算して、numpyが自動的にそれをブロードキャストします。青色チャネルからの緑色チャネルから

赤色チャネルから2を減算5×5 RGB画像リトルデモは、5、3:

>>> A = 10*np.ones((5,5,3), dtype=int) 
>>> A -= [2, 5, 3] 
>>> A[:,:,0] # Red 
array([[8, 8, 8, 8, 8], 
     [8, 8, 8, 8, 8], 
     [8, 8, 8, 8, 8], 
     [8, 8, 8, 8, 8], 
     [8, 8, 8, 8, 8]]) 
>>> A[:,:,1] # Green 
array([[5, 5, 5, 5, 5], 
     [5, 5, 5, 5, 5], 
     [5, 5, 5, 5, 5], 
     [5, 5, 5, 5, 5], 
     [5, 5, 5, 5, 5]]) 
>>> A[:,:,2] # Blue 
array([[7, 7, 7, 7, 7], 
     [7, 7, 7, 7, 7], 
     [7, 7, 7, 7, 7], 
     [7, 7, 7, 7, 7], 
     [7, 7, 7, 7, 7]]) 
関連する問題