Python 向量化在数组中查找最近值的函数

Python 向量化在数组中查找最近值的函数,python,numpy,vectorization,Python,Numpy,Vectorization,我编写了以下函数: import numpy as np def _find_nearest(array, value): """Find the index in array whose element is nearest to value. Parameters ---------- array : np.array The array. value : number The value. Returns

我编写了以下函数:

import numpy as np


def _find_nearest(array, value):
    """Find the index in array whose element is nearest to value.

    Parameters
    ----------
    array : np.array
      The array.

    value : number
      The value.

    Returns
    -------
    integer
      The index in array whose element is nearest to value.

    """
    if array.argmax() == array.size - 1 and value > array.max():
        return array.size
    return (np.abs(array - value)).argmin()
我想对这个函数进行矢量化,这样我就可以一次传递多个值。也就是说,我希望
value
成为一个数组,并让
\u find\u nearest
返回提交的
value\u数组中每个值的索引,而不是单个索引


有人能找到这样做的方法吗?

在父函数中,如果
值和
数组都可见,则可以使用
lambda
来启用矢量化。我将调用父函数
main

def main():
    value = np.random.rand(10, 1)
    array = np.random.rand(100, 100)
    vec_nearest = lambda x: _find_nearest(array, x)
    np.vectorize(vec_nearest)(value)

这将适用于一个
数组
,以及多个
向量值
。返回的将是一个数组。

将另一个维度(
np.newaxis
)添加到正在搜索的数组中,然后跨新维度进行广播。给定巨大的数组,广播可能会因重复数据而浪费大量内存。@Kartik,“浪费”是非常主观的,消耗如何。有时候你用时间换空间,用空间换时间。消耗它就是。我同意你的看法。看看这是否有帮助:。