在我的数据集中,我有X_Coordinate和Y_Coordinate,为了计算紧密度中心性,我需要计算每个节点与其他节点之间的欧几里得距离之和。我尝试过:
for ind, row in allclosetA.iterrows():
allclosetA.loc[ind, "Dist6_71"] = (row['ID71'] - row['ID6']) ** 2
allclosetA.loc[ind, "Dist6_3"] = (row['ID3'] - row['ID6']) ** 2
allclosetA.loc[ind, "Dist71_3"] = (row['ID3'] - row['ID71']) ** 2
allclosetA.loc[ind, "Dist71_6"] = (row['ID6'] - row['ID71']) ** 2
allclosetA.loc[ind, "Dist3_71"] = (row['ID71'] - row['ID3']) ** 2
allclosetA.loc[ind, "Dist3_6"] = (row['ID6'] - row['ID3']) ** 2
它运行良好,但是在我的情况下,列和ID都会更改,因此我需要自动运行代码以根据以下输出获取结果。
谢谢
答案 0 :(得分:0)
不确定这是否行得通,但是由于您要通过“行”来获取X和y坐标,因此为什么不对距离值也做同样的操作。
所以代替:
allclosetA.loc[ind, "Dist6_71"] = (row['ID71'] - row['ID6']) ** 2
做
row["Dist6_71"] = (row['ID71'] - row['ID6']) ** 2
答案 1 :(得分:0)
我找到了以下解决方案可以针对其中的所有列运行它: D表示点的坐标(10个节点),A表示目标节点的坐标(4个节点)
>>Dist = distance.cdist(D, A, 'euclidean')
output will be as :
array([[12133.60222432, 14226.66590047, 13633.17137862, 11551.40491604],
[11717.38072204, 14530.80182803, 13388.81377667, 11638.00260056],
[11857.04168551, 14289.78968555, 13444.84417939, 11495.22703937],
[12170.37182026, 14246.57297414, 13665.43033544, 11578.04979044],
[11855.10630493, 14310.59694105, 13448.47824213, 11509.09643289],
[11819.37984252, 14307.15862737, 13420.39712489, 11495.84805381],
[11703.70538731, 14390.6746685 , 13349.46136896, 11525.60225697],
[11839.17386385, 14305.76790429, 13435.17081908, 11500.84335837],
[12374.10141775, 14259.01528361, 13815.13724876, 11669.28728949],
[11701.63634533, 14442.87630321, 13358.71317513, 11565.26437527]])