Numpy 替换值

我得到了一个 rgb 图像(h 和 w 不是常数),我想将特定范围(rgb 范围)内的所有像素都涂成绿色。我得到了大部分代码的工作,我挣扎的事情:假设我得到以下图像:


arr = np.zeros((4,4,3))

arr[0,0] = [2,3,4]

arr[1, 1] = [1, 2, 3]

让我们假设条件是满足以下规则的所有像素:


t = np.all((arr >= [1,2,3])&(arr <= [1,4,4]),axis = 2)

print(t)

[[False False False False]

[False  True False False]

[False False False False]

[False False False False]]

t 中的每个值代表 arr 中的一个像素,如果它是真的,我想将 arr 中的相应像素更改为 [10,10,10]。意思是我希望输出是:


[[[2. 3. 4.]

  [0. 0. 0.]

  [0. 0. 0.]

  [0. 0. 0.]]


 [[0. 0. 0.]

  [10. 10. 10.]

  [0. 0. 0.]

  [0. 0. 0.]]


 [[0. 0. 0.]

  [0. 0. 0.]

  [0. 0. 0.]

  [0. 0. 0.]]


 [[0. 0. 0.]

  [0. 0. 0.]

  [0. 0. 0.]

  [0. 0. 0.]]]

我要求一种麻木的方式来做到这一点。


慕桂英4014372
浏览 72回答 1
1回答

蝴蝶刀刀

IIUC 你想做的事:arr[t] = [10,10,10]例子:>>> arr = np.zeros((4,4,3))>>> arr[0,0] = [2,3,4]>>> arr[1,1] = [1,2,3]>>> t = np.all((arr >= [1,2,3])&(arr <= [1,4,4]),axis = 2)>>> arr[t] = [10,10,10]>>> arrarray([[[ 2.,&nbsp; 3.,&nbsp; 4.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.]],&nbsp; &nbsp; &nbsp; &nbsp;[[ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [10., 10., 10.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.]],&nbsp; &nbsp; &nbsp; &nbsp;[[ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.]],&nbsp; &nbsp; &nbsp; &nbsp;[[ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.],&nbsp; &nbsp; &nbsp; &nbsp; [ 0.,&nbsp; 0.,&nbsp; 0.]]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python