2017-04-24 118 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]])