2017-04-24 169 views
0

我在形狀(244,244,3)中有一個numpy數組。每個都將RGB圖像作爲numpy數組。我想從每個通道中減去一個值。減去Numpy數組

當然,我可以很容易地做一個for循環,但我認爲在numpy中有一個更快的方法?

任何想法?

非常感謝

+0

向我們展示了糊塗的版本? – Divakar

+0

您是否在減去相同大小的值的數組?在這種情況下,你可以做'array1 - array2';就如此容易。如果情況不是這樣,你能澄清你想減少的值的大小嗎? – isosceleswheel

+0

該形狀表明它是RGB圖像。你對「每一個」的引用,是否意味着你有其他人具有相同的形狀? – NaN

回答

1

你可以簡單地減去一個3矢量,numpy會自動播放它。

小演示了5x5的RGB圖像,從紅色通道,5從綠色通道,3從藍色通道中減去2:

>>> 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]])