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

Python中不使用Pandas,基于Numpy获取主数组中子集元素的索引

解决方案

针对你需要找出subset数组每个元素在main数组中对应索引的需求,这里提供两种纯Numpy的实现方法:

方法一:高效排序映射法(适合大规模数据)

这种方法利用排序和搜索机制,效率更高,尤其数组规模较大时表现更优:

import numpy as np

# 示例数据
main = np.array([0.3, 0.2, 0.7, 0.9])
subset = np.array([0.3, 0.9])

# 获取main数组排序后的原索引
sorted_main_indices = np.argsort(main)
# 生成排序后的main数组
sorted_main = main[sorted_main_indices]

# 在排序后的数组中定位subset元素,再映射回原索引
subset_indices = sorted_main_indices[np.searchsorted(sorted_main, subset)]

print(subset_indices)  # 输出: [0 3]

方法二:直观向量化查找法(适合小规模数据)

这种方法逻辑更直观,代码简洁,对于你的数组规模(600和230)完全够用:

import numpy as np

# 示例数据
main = np.array([0.3, 0.2, 0.7, 0.9])
subset = np.array([0.3, 0.9])

# 定义向量化的索引查找函数
find_index = np.vectorize(lambda val: np.where(main == val)[0][0])
# 批量获取subset元素的索引
subset_indices = find_index(subset)

print(subset_indices)  # 输出: [0 3]

错误原因说明

你遇到的IndexError大概率是直接用subset数组作为索引去访问main数组(比如写了main[subset]),而Numpy数组的索引只能是整数、切片、布尔数组等类型,浮点数数组无法作为有效索引,因此触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:22:06