填充Numpy阵列第三维的清洁方法

时间:2014-04-10 16:49:16

标签: python numpy

我有一个代表RGB图像的3D numpy数组。我想用特定的RGB值填充整个图像。 numpy.fill只将标量作为参数 - 是否有更简洁的方法而不是循环为同一个第三维RGB三元组分配到2d网格中的每个点?

2 个答案:

答案 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.]]])