清晰填充Numpy数组的第三维度的方法
我有一个三维的numpy数组,它表示一张RGB图像。我想用一个特定的RGB值填满整张图像。numpy.fill
这个方法只能接受一个单一的数值作为参数——有没有比循环更简单的方法,把同样的RGB三元组赋值给二维网格中的每一个点呢?
2 个回答
3
初始化数组
In [2]: m = numpy.zeros((2,2,3))
In [3]: m
Out[3]:
array([[[ 0., 0., 0.],
[ 0., 0., 0.]],
[[ 0., 0., 0.],
[ 0., 0., 0.]]])
用(r, g, b)三元组填充每个(x, y)元素
In [22]: m[...] = (11, 22, 33)
In [23]: m
Out[23]:
array([[[ 11., 22., 33.],
[ 11., 22., 33.]],
[[ 11., 22., 33.],
[ 11., 22., 33.]]])
这就是你想要做的事情吗?
另外,如果你只想设置绿色成分,比如说
In [25]: m[..., 0] = 77
In [26]: m
Out[26]:
array([[[ 77., 22., 33.],
[ 77., 22., 33.]],
[[ 77., 22., 33.],
[ 77., 22., 33.]]])
7
也许可以这样做:
>>> m = np.zeros((2,2,3))
>>> m[:] = [10,20,3]
>>> m
array([[[ 10., 20., 3.],
[ 10., 20., 3.]],
[[ 10., 20., 3.],
[ 10., 20., 3.]]])
>>> m[0,0]
array([ 10., 20., 3.])
>>> m[0,1]
array([ 10., 20., 3.])
>>> m[1,0]
array([ 10., 20., 3.])
>>> m[1,1]
array([ 10., 20., 3.])