获取由区域包围的第一个和最后一个值的索引



我有一个整数值的排序pytables表,其中可能包含重复值,以及一个由起始值和结束值表示的区域(结束值除外)。

我想找到最接近区域开始的值的索引和最接近区域结束的值的指数。生成的索引必须用区域括起来。示例:

region = (35, 56)
table_data = [4, 6, 18, 18, 30, 37, 37, 49, 54, 56, 80, 84]
result: (5, 8)

这听起来像是可以用类似二进制搜索的算法来解决的问题,但我还没有想好怎么做。

由于这段代码可能在非常大的pytables表上执行数千次,因此性能非常重要。最好,如果可能的话,开始和结束索引值应该在同一循环中计算。

有人能帮忙吗?

编辑:

实际上,我不是在处理数组,而是在处理pytables表。因此,建议使用平分模块的答案是行不通的。表[index]可以访问行(通过表的getslice方法)

简单使用binsearch查找

  • 大于下限的最小值
  • 小于上限的最大值

复杂性为O(lgn),因为这是两个完全独立的问题。

最新更新