我有一个my_values数组,为此我尝试推断true_values数组中最接近的较小值。使用下面的find_nearest函数无法实现我想要的功能。如何附加此值以找到最接近的较小值?

import numpy as np

true_values = np.array([4.5, 3.0, 2.4, 1.2, 0.1])
my_values = np.array([0.8, 2.1, 3.01, 8.0, 0.2, 2.6, 2.1, 3.99, 1.3])

def find_nearest(array,value):
    idx = np.abs((array-value)).argmin()
    return array[idx]

nearest = []
for i in my_values:
    nearest.append(find_nearest(true_values,i))

print nearest
# [1.2, 2.4, 3.0, 4.5, 0.1, 2.4, 2.4, 4.5, 1.2]


但是相反,我希望输出是

nearest = [0.1, 1.2, 3.0, 4.5, 0.1, 2.4, 1.2, 3.0, 1.2]


此处的第一个答案:How to find nearest value that is greater in numpy array?
以最接近的较大值完成此操作。也许可以更改此值以找到最接近的较小值?

最佳答案

使用searchsorted是一个选项(如上面的注释中以及链接问题中的答案之一所述):

>>> true_values[-np.searchsorted(true_values[::-1], my_values)]
array([ 0.1,  1.2,  3. ,  4.5,  0.1,  2.4,  1.2,  3. ,  1.2])


请注意,searchsorted要求true_values以升序排序。在这里,有必要翻转示例数组的顺序,然后使返回的索引变为负整数,以进行奇特的索引编制。

如果未对true_values进行排序(沿任何方向),则需要使用np.argsortsorter中的searchsorted参数。

关于python - 推断numpy数组中最接近的较小值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33320574/

10-09 19:08