Numpy:找到最接近输入

时间:2017-02-08 15:34:56

标签: python arrays numpy

我有一个大数组,其值从0到360,增量为.08。所以我有一个输入值,我需要通过这个大数组并找到2个最接近的值:一个更大,一个更小。例如(简化):

array = [0, .08, .16, .24, .32, .40]

input = .10 (variable)
output = [1,2]

因为.10介于.08和.16之间,所以索引将是1和2。 在此先感谢您的帮助!!

3 个答案:

答案 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