python - 推断 numpy 数组中最近的、较小的值

标签 python arrays python-2.7 numpy

我有一个 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 参数 搜索排序

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

相关文章:

python - 如何将条形码渲染格式的字符串转换为 html

javascript - 如何通过单击复制标记在folium Map 上的位置?

python - 有没有更好的方法来查找出现在给定字典中的字符串的所有连续子字符串

python-2.7 - 使用霍夫圆变换进行眼瞳跟踪

c# - 将一个字符串数组复制到另一个

python - 抓取 react-id

python - 在 PyQt4 中访问 QTextHtmlImporter

python - Python 循环中丢失了掷骰子组合值的函数

java - float 数组到 double 数组

php - 将 PostgreSQL 数组转换为 PHP 数组