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,“浪费”是非常主观的,消耗如何。有时候你用时间换空间,用空间换时间。消耗它就是。我同意你的看法。看看这是否有帮助:。