如何将向量中最接近的元素与元素相关联



我正在使用python,我想知道是否存在更好/更快的方法来替换数组中的元素与另一个元素中最接近的元素。 我的解决方案是这样的:

ls = [1,2,3]                                                                                                                                           
ls2 = [0.9,1.2,2.1]                                                                                                                                    
import numpy as np 
for i,element in enumerate(ls2): 
min = 100000 
k  = -1
for x in ls:
tmp = np.abs(element-x)
if tmp < min:
min = tmp
k = x 
ls2[i] = k 

获得的结果:

ls2 : [1, 1, 2]

您可以使用 pandas 和列表理解来尝试以下代码:

import pandas as pd
ls = [1,2,3]                                                                                                                                           
ls2 = [0.9,1.2,2.1]   
ser = pd.Series( ls )
ls3 = [ ls[ abs(ser-x).sort_values(ascending=True).index[0] ] for x in ls2 ]
ls3
Out[9]: [1, 1, 2]

相关内容

  • 没有找到相关文章

最新更新