基于Numpy快速定位数组多段收敛-发散区间的起止及精准点索引
需求说明
我有一批numpy浮点数组,需要完成以下高效处理:
单区间数组规则
数组元素会呈现先收敛至指定值,随后发散的趋势:
- 升序数组示例:
[..., 50.0, 51.0, 52.2, ..., 59.3, 60.4, 61.3, 62.1, ..., 67.9, 68.1, 69.2, ...]
定义范围边界:start=52.0、exact=60.0、end=68.0,需找到数组中最接近这三个值的元素对应的索引——上述示例中,52.2对应start索引,60.4对应exact索引,67.9对应end索引。
- 降序数组示例:
[..., 69.2, 68.1, 67.9, ..., 62.1, 61.3, 60.4, 59.3, ..., 52.2, 51.0, 50.0, ...]
此时规则适配为:67.9对应start索引,60.4对应exact索引,52.2对应end索引。
多区间数组规则
实际数组可能包含多段收敛-发散区间,示例如下:
[..., 52.2, ..., 60.4, ..., 67.9, ..., 52.4, ..., 60.0, ..., 67.7, ..., 52.0, ..., 60.6, ..., 67.3, ...]
需要返回每个区间的索引组成的列表,格式如下:
[ [start0, exact0, end0], [start1, exact1, end1], [start2, exact2, end2], ]
不同数组的区间数量可能为0、1或多个。
性能要求
由于要处理大量数组,循环实现效率极低,需提供基于numpy的向量化实现方案。
内容的提问来源于stack exchange,提问作者astroboy
相关产品推荐
相关产品推荐

