Python中百万行无排序二维数组按ID检索的最快方法及numpy/pandas效率对比
最快实现方案
- 先把你需要检索的100个目标ID存入
set(哈希集合),保证单次ID匹配的时间复杂度为O(1) - 直接遍历一次原始的百万行数组,每读取一个元素就判断它的ID是否在目标集合中,匹配成功则存入结果列表
- 遍历完成后直接丢弃原始数组即可,不需要做任何额外的数据结构转换
转numpy数组或pandas DataFrame不会提升速度,反而会增加开销
- 两种结构的转换都需要全量扫描、解析所有百万行数据,这一步的时间开销已经远高于直接遍历匹配100条ID的耗时
- 你只需要做一次性的低频次检索,完全没必要为了少量查询付出额外的格式转换成本
补充说明:如果是Python环境,原生遍历百万级列表的耗时通常在几十毫秒级别,比加载为pandas DataFrame的速度快3~10倍。
内容的提问来源于stack exchange,提问作者Rockid
相关产品推荐
相关产品推荐

