【发布时间】:2021-10-01 11:56:43
【问题描述】:
我有两个数据框(附图)。对于表 1 中给定的每一行 -
Part1 - 我需要在表 2 中找到给出最小欧几里得距离的行。 Output-1 是预期的答案。
Part2 - 我需要在表 2 中找到给出最小欧几里得距离的行。输出 2 是预期的答案。这里唯一的区别是Table-2中的一行不能被选择两次。
我尝试了这段代码来获取距离,但不确定如何添加其他字段 -
import numpy as np
from scipy.spatial import distance
s1 = np.array([(2,2), (3,0), (4,1)])
s2 = np.array([(1,3), (2,2),(3,0),(0,1)])
print(distance.cdist(s1,s2).min(axis=1))
两个数据帧和预期的输出:
【问题讨论】:
-
对于第二种情况,您可能希望使用匈牙利算法。首先计算所有成对距离,然后找到最优二分匹配
标签: python dataframe numpy euclidean-distance scipy-spatial