假设我有一个整数排序的数组
partition = [0, 3, 7, 12, 18, 23, 27]
然后赋值
value = 9
我想返回我的值所在的时间间隔。例如
bounds = function(partition, value)
print(bounds)
>>>[7,12]
有没有可以帮助我的功能?还是我必须从头开始构建它?
答案 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)