如何高效从大型有序递增时间数组中提取相邻差值大于30的元素对
高效实现方案
直接使用NumPy自带的向量化差分运算即可实现需求,全程不需要手动遍历数组,执行效率远高于纯Python循环,完全适配数千甚至数十万量级的数组场景。
实现步骤
- 第一步:用
np.diff()计算数组相邻元素的差值 - 第二步:筛选出差值大于30的索引位置
- 第三步:按照索引取出对应的相邻元素对
示例代码
import numpy as np hugeArr = np.array([0, 2.072, 50.0, 90.0, 91.1]) # 计算相邻元素差值 diff_arr = np.diff(hugeArr) # 生成差值大于30的掩码 mask = diff_arr > 30 # 取出符合要求的相邻元素对 result = np.column_stack((hugeArr[:-1][mask], hugeArr[1:][mask])) # 转为元组格式(按需选择) tuple_result = [tuple(pair) for pair in result] print(tuple_result)
输出结果
[(2.072, 50.0), (50.0, 90.0)]
效率说明
np.diff是NumPy底层C实现的向量化操作,时间复杂度为O(n)但常数项极低,长度为1万的数组运算耗时仅在微秒级,完全满足性能要求。
内容的提问来源于stack exchange,提问作者Flynn O'Connell
相关产品推荐
相关产品推荐

