我有一个代表RGB图像的3D numpy数组。我想用特定的RGB值填充整个图像。 numpy.fill
只将标量作为参数 - 是否有更简洁的方法而不是循环为同一个第三维RGB三元组分配到2d网格中的每个点?
答案 0 :(得分:5)
也许:
>>> 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.])
答案 1 :(得分: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.]]])