查找给定数字在分区中的位置

时间:2019-04-09 21:20:47

标签: python data-partitioning

假设我有一个整数排序的数组

partition = [0, 3, 7, 12, 18, 23, 27]

然后赋值

value = 9

我想返回我的值所在的时间间隔。例如

bounds = function(partition, value)
print(bounds)
>>>[7,12]

有没有可以帮助我的功能?还是我必须从头开始构建它?

3 个答案:

答案 0 :(得分:1)

从纪录片中尝试numpy.searchsorted().

  

找到应该在其中插入元素以保持顺序的索引。

import numpy as np
partition = np.array( [0, 3, 7, 12, 18, 23, 27] )
value = 9
idx = np.searchsorted(partition,value)
bound = (partition[idx-1],partition[idx])
print(bound)
>>>>(7,12)

searchsorted的优点是它可以一次为您提供多个值的索引。

答案 1 :(得分:0)

bisect module非常适合有效地执行此操作。它将返回上界的索引。

如果值可以超出范围,则需要进行一些错误检查:

from bisect import bisect
partition = [0, 3, 7, 12, 18, 23, 27]
value = 9
top = bisect(partition, value)

print(partition[top-1], partition[top])
# 7 12

答案 2 :(得分:0)

 def function(partition,value):
  for i in range(len(partition)):
  if partition[i]<value and partition[i+1]>value:
    print [partition[i],partition[i+1]]
 partition = [0, 3, 7, 12, 18, 23, 27,5,10]
 value=9
 function(partition,value)