我有一个充满RGB值的numpy 3d数组,例如shape =(height,width,3)
matrix = np.array( [[[0,0.5,0.6],[0.9,1.2,0]])
如果任何值超过阈值,我必须替换RGB值,例如,阈值= 0.8,替换= [2,2,2]然后
matrix = [[[0,0.5,0.6],[2,2,2]]
我怎么能用一个有效的甘露聚糖呢?目前我正在使用双循环并检查是否有任何rgb值高于阈值,我替换它但是对于n = 4000数组这是安静的慢。
如何使用numpy来提高效率,或者使用np.where?
我已经用另一个width
维度扩展了你的矩阵。
matrix = np.array([[[0,0.5,0.6],[0.9,1.2,0]],[[0,0.5,0.6],[0.9,1.2,0]]])
您可以在轴2上使用np.any
构建蒙版(从0开始,因此第三轴):
mask = np.any((matrix > 0.8), axis=2)
# mask:
array([[False, True],
[False, True]], dtype=bool)
matrix[mask] = np.array([2,2,2])
你得到的matrix
:
array([[[ 0. , 0.5, 0.6],
[ 2. , 2. , 2. ]],
[[ 0. , 0.5, 0.6],
[ 2. , 2. , 2. ]]])