Skip to main content
 首页 » 编程设计

欧氏距离的python数据帧矩阵

2025年05月04日30JustinYoung

我想创建一个自己定制的 k 最近邻方法。

为此,我需要一个矩阵 (x : y),它返回给定函数的 x 和 y 的每个组合的距离(例如,基于我的数据集的 7 项的欧几里得)。

例如

data: 
   x1  x2  x3 
  row 1:  1   2   3 
  row 2:  1   1   1  
  row 3:  4   2   3 

如果我选择 x1 和 x2 以及 euclidean,那么输出应该是 3x3 输出

1:1=0 
1:2 =sqrt((1-1)^2+(2-1)^2)=1 
1:3 =sqrt((1-4)^2+(2-2)^2)=sqrt(3) 
2:1=1:2=1 
2:2=0 
2:3=sqrt((1-4)^2+(1-2)^2)=2 
3:3=0 

等等……

如何在不遍历数据框的情况下编写它?

在此先感谢您的支持。

请您参考如下方法:

您可以使用 scipy.spatial.distance.pdist和 scipy.spatial.distance.squareform :

from scipy.spatial.distance import pdist, squareform 
 
dist = pdist(df[['x1', 'x2']], 'euclidean') 
df_dist = pd.DataFrame(squareform(dist)) 

如果您只想将数组作为输出,而不是 DataFrame,只需使用 squareform 本身,而不用将其包装在 DataFrame 中。

结果输出(作为 DataFrame):

     0         1         2 
0  0.0  1.000000  3.000000 
1  1.0  0.000000  3.162278 
2  3.0  3.162278  0.000000