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

百万级不同长度数组中匹配元素位置的高效查询方案

高效解决方案

由于array_2已排序且元素唯一,同时你的数据规模达到百万级,二分查找是最优选择,相比循环调用np.where的暴力匹配,时间复杂度从O(n*m)降到O(n log m),性能提升显著。

实现代码

import numpy as np

array_1 = np.array([555, 641, 1000, 641, 4, 641])
array_2 = np.array([4, 555, 641, 1000])

# 利用二分查找直接获取索引
out = np.searchsorted(array_2, array_1).tolist()
print(out)  # 输出: [1, 2, 3, 2, 0, 2]

核心原理

np.searchsorted专门针对有序数组实现二分查找,为array_1的每个元素计算其在array_2中保持有序的插入位置。因为array_2元素唯一且array_1的所有元素都存在于array_2中,这个插入位置就等于元素在array_2中的实际索引。

补充方案(针对未排序的array_2)

如果遇到array_2未排序的场景,可以先构建值到索引的映射字典,再批量查询:

value_index_map = {val: idx for idx, val in enumerate(array_2)}
out = [value_index_map[x] for x in array_1]

不过对于已排序的array_2,np.searchsorted的性能比字典映射更优,尤其在数据量极大时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:52:19