清晰填充Numpy数组的第三维度的方法

4 投票
2 回答
5728 浏览
提问于 2025-04-18 02:13

我有一个三维的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.])

撰写回答