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

如何将numpy数组中出现次数少于2次的数值批量替换为0

解决方法

你已经拿到了待替换的数值列表freq,直接用numpy自带的np.isin()生成布尔索引,对应位置赋值为0即可,代码如下:

import numpy as np

# 先将原始列表转换为numpy数组
image = np.array([1 ,2 ,2, 3, 4, 4, 4, 4,
                  5, 6, 6 ,7 ,8 ,8 ,8 ,8])

# 你已有的生成待替换值的代码
(unique, counts) = np.unique(image, return_counts=True)
frequencies = np.asarray((unique, counts)).T
freq = frequencies[frequencies[:,1] < 2,0]

# 核心替换逻辑
image[np.isin(image, freq)] = 0

print(image)

运行后输出结果和你预期的完全一致:

array([0, 2, 2, 0, 4, 4, 4, 4, 0, 6, 6, 0, 8, 8, 8, 8])

简化写法(无需单独提取freq)

如果不需要单独保存待替换的数值列表,可以一步完成筛选替换:

import numpy as np
image = np.array([1 ,2 ,2, 3, 4, 4, 4, 4,
                  5, 6, 6 ,7 ,8 ,8 ,8 ,8])
unique, counts = np.unique(image, return_counts=True)
# 直接保留出现次数≥2的数值,其余替换为0
image = np.where(np.isin(image, unique[counts >= 2]), image, 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:54:01