Python 填充Numpy数组三维的干净方法
我有一个代表RGB图像的3D numpy数组。我想用一个特定的RGB值填充整个图像Python 填充Numpy数组三维的干净方法,python,numpy,Python,Numpy,我有一个代表RGB图像的3D numpy数组。我想用一个特定的RGB值填充整个图像numpy.fill仅将标量作为参数——有没有比循环更干净的方法将相同的三维RGB三元组分配给二维网格中的每个点?可能: >>> m = np.zeros((2,2,3)) >>> m[:] = [10,20,3] >>> m array([[[ 10., 20., 3.], [ 10., 20., 3.]], [[
numpy.fill
仅将标量作为参数——有没有比循环更干净的方法将相同的三维RGB三元组分配给二维网格中的每个点?可能:
>>> 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.])
初始化数组
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 [25]: m[..., 0] = 77
In [26]: m
Out[26]:
array([[[ 77., 22., 33.],
[ 77., 22., 33.]],
[[ 77., 22., 33.],
[ 77., 22., 33.]]])
我想基本上做到这一点,但不是
[11,22,33]
我希望以特定的方式生成随机数(这里是一个顶部带有随机噪声的函数)。如果我做m[…]=np.random(3)
,我总是有相同的三个随机数。如果我做的是m=np.random((2,2,3))
,我几乎无法控制随机数是如何生成的。当然,我不想要循环。你有什么想法吗?你也可以分配一个数组,例如m[…,0]=[1,2,3,4]
它必须是正确的大小,数据由你决定。
In [25]: m[..., 0] = 77
In [26]: m
Out[26]:
array([[[ 77., 22., 33.],
[ 77., 22., 33.]],
[[ 77., 22., 33.],
[ 77., 22., 33.]]])