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

如何在NumPy数组中删除指定值元素(传入值列表而非索引)

如何删除NumPy数组中指定值的元素?

np.delete的第二个参数接收的是索引列表而非值列表,所以你直接传入values_to_remove时,实际删除的是原数组中索引为2、3、6的元素(对应值3、4、7),这和你的需求不符。

下面是两种可行的修改方案:

方案一:布尔索引(推荐,保留原顺序和重复项)

利用np.isin生成掩码,筛选出不在待删除值列表中的元素:

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
values_to_remove = [2, 3, 6]

# 生成掩码:元素不在待删除列表中则为True
mask = ~np.isin(a, values_to_remove)
new_a = a[mask]
print(new_a)  # 输出: [1 4 5 7 8 9]
  • np.isin(a, values_to_remove)会返回一个布尔数组,标记每个元素是否在待删除列表中
  • ~符号对布尔数组取反,得到需要保留的元素的掩码
  • 用掩码索引原数组,即可得到删除指定值后的结果

方案二:集合差集(自动排序、去重)

如果不在意元素顺序,且不需要保留重复项,可以用np.setdiff1d:

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
values_to_remove = [2, 3, 6]

new_a = np.setdiff1d(a, values_to_remove)
print(new_a)  # 输出: [1 4 5 7 8 9]

注意:这个方法会返回排序后的数组,并且自动去除原数组中的重复元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:25:30