为了账号安全,请及时绑定邮箱和手机立即绑定

Numpy 替换值

Numpy 替换值

慕桂英4014372 2022-12-20 12:28:44
我得到了一个 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.]]]我要求一种麻木的方式来做到这一点。
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

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]

>>> arr

array([[[ 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.]]])


查看完整回答
反对 回复 2022-12-20
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信