我有一个大数组,其值从0到360,增量为.08。所以我有一个输入值,我需要通过这个大数组并找到2个最接近的值:一个更大,一个更小。例如(简化):
array = [0, .08, .16, .24, .32, .40]
input = .10 (variable)
output = [1,2]
因为.10介于.08和.16之间,所以索引将是1和2。 在此先感谢您的帮助!!
答案 0 :(得分:3)
如果您的步骤不是常数,则可以使用bisect
假设数组已排序。
import bisect
array = [0, .03, .05, .16, .24, .32, .40]
input = 0.1
ind = bisect.bisect_left(array, input)
print([ind - 1, ind])
结果:
[2, 3]
答案 1 :(得分:2)
看起来像numpy有功能钉: searchsorted
array = [0, .03, .05, .16, .24, .32, .40]
input = 0.1
undx = np.searchsorted(array, input)
array[undx-1], input, array[undx]
Out[6]: (0.05, 0.1, 0.16)
答案 2 :(得分:0)
看起来像O(1)解决方案的算术问题:
n