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

如何基于索引列表将NumPy数组拆分为两个子数组?

拆分NumPy数组为指定索引元素与剩余元素

你可以通过生成布尔掩码或直接生成补集索引的方式实现需求,以下是具体方法:

方法一:布尔掩码法(保留原顺序)

这种方法能直接生成对应剩余元素的掩码,且不会改变元素在原数组中的顺序:

import numpy as np

a = np.arange(10)
idx = np.random.choice(10, 3, replace=False)

# 获取选中的元素
selected_elements = a[idx]

# 生成补集掩码:先创建全True数组,再将选中索引位置设为False
mask = np.ones(len(a), dtype=bool)
mask[idx] = False
# 获取剩余元素
remaining_elements = a[mask]

print("选中元素:", selected_elements)
print("剩余元素:", remaining_elements)

方法二:生成补集索引数组

如果需要先得到补集的索引列表,再提取元素,可以用np.setdiff1d:

# 生成补集索引(结果会自动排序)
complement_idx = np.setdiff1d(np.arange(len(a)), idx)
remaining_elements = a[complement_idx]

为什么a[~idx]无效?

idx是整数类型的索引数组,~对整数执行的是按位取反操作,得到的结果并非你需要的补集索引,因此必须转换为布尔掩码或生成正确的补集整数索引才能实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:27:00