Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
欧氏距离的python数据帧矩阵_Python_Pandas_Dataframe - Fatal编程技术网

欧氏距离的python数据帧矩阵

欧氏距离的python数据帧矩阵,python,pandas,dataframe,Python,Pandas,Dataframe,我想创建一个自定义的k最近邻方法 为此,我需要一个矩阵(x:y),它返回给定函数的x和y的每个组合的距离(例如,基于我的数据集的7项的欧几里德距离) e、 g 如果我选择x1和x2以及欧几里德,那么输出应该是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 等等 如何在不遍历数据帧的情况下编写它

我想创建一个自定义的k最近邻方法

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

e、 g

如果我选择x1和x2以及欧几里德,那么输出应该是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
等等

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

提前感谢您的支持。

您可以使用和:

如果您只需要一个数组作为输出,而不是一个数据帧,只需单独使用
squareform
,而无需将其包装在数据帧中

结果输出(作为数据帧):


看起来您的一些示例计算是错误的,即
1:3
应该是
sqrt(9)=3
,而
2:3
应该是
sqrt(10)
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
from scipy.spatial.distance import pdist, squareform

dist = pdist(df[['x1', 'x2']], 'euclidean')
df_dist = pd.DataFrame(squareform(dist))
     0         1         2
0  0.0  1.000000  3.000000
1  1.0  0.000000  3.162278
2  3.0  3.162278  0.000000