Python 如何计算数据帧中从一个数据点到所有其他数据点的欧几里德距离之和?

Python 如何计算数据帧中从一个数据点到所有其他数据点的欧几里德距离之和?,python,pandas,dataframe,euclidean-distance,Python,Pandas,Dataframe,Euclidean Distance,我有以下数据帧: import pandas as pd import math df = pd.DataFrame() df['x'] = [2, 1, 3] df['y'] = [2, 5, 6] df['weight'] = [11, 12, 13] print(df) x y weight 0 2 2 11 1 1 5 12 2 3 6 13

我有以下数据帧:

import pandas as pd
import math

df = pd.DataFrame()
df['x'] = [2, 1, 3]
df['y'] = [2, 5, 6]
df['weight'] = [11, 12, 13]
print(df)

     x    y   weight   
 0   2    2       11       
 1   1    5       12       
 2   3    6       13       
假设这3个节点分别称为{a,b,c}。我想计算从一个节点到所有其他节点的总欧氏距离乘以其权重,如下所示:

Sum = 11(d(a,b)+d(a,c)) + 12(d(b,a)+d(b,c)) + 13(d(c,a)+d(c,b))
使用-

我们还可以使用相同SciPy方法中的
pdist
squareform
组合来替换那里的
cdist

用这些实际值进行验证-

In [76]: from scipy.spatial.distance import euclidean

In [77]: euclidean([2,2],[1,5])*11 + euclidean([2,2],[3,6])*11
Out[77]: 80.139216143646451

In [78]: euclidean([1,5],[2,2])*12 + euclidean([1,5],[3,6])*12
Out[78]: 64.78014765201803

In [80]: euclidean([3,6],[2,2])*13 + euclidean([3,6],[1,5])*13
Out[80]: 82.669256840526856

你想要一个节目吗?你还要别的什么吗?请展示您的努力,这个问题需要一个复杂的解决方案。另外,请注意,您的数据中没有
d
标签。@cᴏʟᴅsᴘᴇᴇᴅ d(a,b)表示从节点a到节点b的欧氏距离。非常感谢。这对我真的很有帮助:)不管怎样,如果节点数为1000,这个程序能工作吗?@arizamoona取决于系统RAM。但对于大小合适的公羊来说应该没问题。使用我的16 GB设置,我可以运行
10000
节点,只是给你一个估计。哦,你的意思是,如果节点数为1000或更多,那么此计算将花费大量时间运行?您认为,1000个节点的计算需要多少秒/分钟?“大致可以。”arizamoona再次取决于设置。为什么不在你这边试试呢?时间应该与数据集大小成比例。我明白了。再次感谢你。你是如此善良和乐于助人:)
In [76]: from scipy.spatial.distance import euclidean

In [77]: euclidean([2,2],[1,5])*11 + euclidean([2,2],[3,6])*11
Out[77]: 80.139216143646451

In [78]: euclidean([1,5],[2,2])*12 + euclidean([1,5],[3,6])*12
Out[78]: 64.78014765201803

In [80]: euclidean([3,6],[2,2])*13 + euclidean([3,6],[1,5])*13
Out[80]: 82.669256840526856