向量化函数以查找数组中最接近的值

时间:2016-08-13 02:27:36

标签: 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
    -------
    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成为一个数组,并且_find_nearest返回(而不是单个索引)所提交的value_array中每个值的索引。 / p>

任何人都可以看到这样做的方法吗?

1 个答案:

答案 0 :(得分:1)

在父函数内,valuearray都可见,您可以使用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)

这适用于一个arrayvector的多个值。返回将是一个数组。