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

不使用pandas高效查找数组元素在另一数组中对应索引的方法

数组元素匹配索引的高效实现方案

需求背景

已知两个数组:
arr1 = ["ABC","DEF","GHI","XYZ"]
arr2 = ["ABC","XYZ"]
需要获取arr2每个元素在arr1中对应的索引,预期输出为[0,3]。

原有基于pandas lambda遍历的实现需要对arr2的每个元素都执行一次全arr1匹配,数组量级较大时性能较低,以下是优先推荐的NumPy向量化实现,以及其他可选高效方案:

优先推荐:NumPy实现

该方案为纯向量化操作,避免了循环遍历,数据量越大效率提升越明显,无需引入pandas依赖:

import numpy as np

# 转换为numpy数组
np_arr1 = np.array(arr1)
np_arr2 = np.array(arr2)

# 获取arr1的排序索引
sorter = np.argsort(np_arr1)
# 匹配得到对应索引
result = sorter[np.searchsorted(np_arr1, np_arr2, sorter=sorter)].tolist()

输出结果为[0,3],符合预期。如果arr1中存在重复元素,该方案会返回第一个匹配项的索引,适配绝大多数场景需求。

其他可选高效方案

  • 纯Python字典映射方案(无需引入第三方依赖,理论时间复杂度最低):
# 构建arr1元素到索引的哈希映射
val_to_idx = {val: idx for idx, val in enumerate(arr1)}
# 直接查表得到结果
result = [val_to_idx[x] for x in arr2]

该方案时间复杂度为O(n+m),适合内存可以容纳arr1全量元素做哈希映射的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:45:02