我正在使用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]