You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用np.where处理多值场景?数组非指定值置零问题求助

问题修正:保留指定值其余置0的numpy数组处理

原代码的问题在于数组与列表直接比较的广播逻辑不符合预期:二维数组arr和列表labels直接用!=比较时,numpy会尝试将列表广播为和arr同维度的数组,导致条件判断错误,最终返回全0数组。

下面是两种正确的实现方式:

方法1:使用np.isin(推荐,适合任意数量指定值)

import numpy as np

arr = np.array(img)
labels = [23, 43, 64]
# 判断元素是否在指定列表中,不在则替换为0
arr_masked = np.where(np.isin(arr, labels), arr, 0)

方法2:组合多条件判断(适合少量指定值)

import numpy as np

arr = np.array(img)
# 通过逻辑或组合多个等于判断
arr_masked = np.where((arr == 23) | (arr == 43) | (arr == 64), arr, 0)

说明

  • np.isin(arr, labels)会生成与arr同形状的布尔数组,True表示对应位置的元素在labels列表中,False则不在。
  • np.where会根据布尔数组的结果,选择保留原数组值(条件为True)或替换为0(条件为False)。

内容的提问来源于stack exchange,提问作者rayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:36:23