给定一个值,找到排序数组

时间:2017-08-16 15:39:59

标签: python arrays numpy

例如我有数组x

x = [10, 100, 1000, 10000] 

如果我有数字600,那么如何将值100作为较低值,将1000作为较高值。

1 个答案:

答案 0 :(得分:3)

假设输入为已排序,我们可以使用np.searchsorted来获取可以按排序顺序放置600的索引,然后只需使用索引和一次性移位索引来获得较低的值索引的上限,如此 -

idx = np.searchsorted(x,600)
out = x[idx-1], x[idx]

示例运行 -

In [41]: x = [10, 100, 1000, 10000]

In [42]: idx = np.searchsorted(x,600)

In [44]: x[idx-1], x[idx]
Out[44]: (100, 1000)

我们也可以使用bisect module,我相信可能会更快一点 -

import bisect

idx = bisect.bisect_left(x,600)