我正在使用三维数组(出于本示例的目的,您可以想象它们代表屏幕的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通道已经低于5的像素设置G通道的任意值.我可以设法隔离我感兴趣的像素:
>>> 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