我正在处理三维数组(在本例中,您可以想象它们表示屏幕X,Y坐标处的RGB值)。>>> import numpy as np
>>> a = np.floor(10 * np.random.random((2, 2, 3)))
>>> a
array([[[ 7., 3., 1.],
[ 9., 6., 9.]],
[[ 4., 6., 8.],
[ 8., 1., 1.]]])
我想做的是将G通道设置为一个任意值,用于G通道已经低于5的像素。我可以设法隔离我感兴趣使用的像素:>>> a[np.where(a[:, :, 1] < 5)]
array([[ 7., 3., 1.],
[ 8., 1., 1.]])
但我很难理解如何只为G通道分配一个新值。我试过:>>> a[np.where(a[:, :, 1] < 5)][1] = 9
>>> a
array([[[ 7., 3., 1.],
[ 9., 6., 9.]],
[[ 4., 6., 8.],
[ 8., 1., 1.]]])
……但似乎没有任何效果。我也试过:>>> a[np.where(a[:, :, 1] < 5), 1] = 9
>>> a
array([[[ 7., 3., 1.],
[ 9., 9., 9.]],
[[ 4., 6., 8.],
[ 9., 9., 9.]]])
…(无法理解发生了什么)。最后我试着:>>> a[np.where(a[:, :, 1] < 5)][:, 1] = 9
>>> a
array([[[ 7., 3., 1.],
[ 9., 6., 9.]],
[[ 4., 6., 8.],
[ 8., 1., 1.]]])
我怀疑我遗漏了一些关于NumPy工作原理的基本知识(这是我第一次使用这个库)。我希望能得到一些帮助,帮助我实现我想要的目标,并对我之前的尝试做些解释。
非常感谢您的帮助和专业知识!
编辑:我希望得到的结果是:>>> a
array([[[ 7., 9., 1.], # changed the second number here
[ 9., 6., 9.]],
[[ 4., 6., 8.],
[ 8., 9., 1.]]]) # changed the second number here