例如我有数组x
x = [10, 100, 1000, 10000]
如果我有数字600,那么如何将值100作为较低值,将1000作为较高值。
答案 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)