我有一个给定的值列表和一组具有相似值的列表(列表A
、、B
和)。C
我正在尝试找到一种方法来返回与列表最匹配的given
列表。我想使用最小二乘拟合作为距离度量。
given = [0, 1, 2, 3, 4, 5]
A = [0.1, 0.9, 2, 3.3, 3.6, 5.1]
B = [-0.1, 0.9, 2.1, 3.1, 3.9, 5]
C = [0, 1.1, 2, 2.9, 4, 5.1]
所以在这种情况下,它将C
作为最接近的匹配返回given
。
我想我可以加入类似的东西:
match = [min([val[idx] for val in [A,B,C]], key=lambda x: abs(x-given[idx])) for idx in range(len(given))]
但这只会返回每个列表元素的最接近的值。我不确定如何将列表 C 识别为最接近的逐点匹配。
另外,如果列表的长度不同,如果我不逐个索引比较它们,我真的不知道该怎么办。例如:
given = [0, 1, 2, 3, 4, 5]
A = [0.1, 0.9, 2, 3.3, 3.6, 2, 5.1, 3, 6.8, 7.1, 8.2, 9]
B = [-0.1, 0.9, 2.1, 3.1, 3.9]
C = [-1.7, -1, 0, 1.1, 2, 2.9, 4, 5.1, 6, 7.1, 8]
仍将C
作为最接近的匹配返回。
我也在使用 Numpy,但没有发现任何有用的东西。任何帮助将不胜感激!