我写了以下函数:
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>
任何人都可以看到这样做的方法吗?
答案 0 :(得分:1)
在父函数内,value
和array
都可见,您可以使用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)
这适用于一个array
和vector
的多个值。返回将是一个数组。