首页 > 解决方案 > 创建邻接矩阵计算多个城市之间的距离

问题描述

我目前有这样的数据

                   0                     1        2
0   Ho Chi Minh City               Dalat   1146.72
1  Ho Chi Minh City               Mui Ne    220.00
2  Mui Ne                         Dalat    340.00

我想创建一个可以显示双数组的矩阵

                     HCM                Dalat        Mui Ne
    HCM               0                 1146.72       220
    Dalat             1146.72           0             340
    Mui Ne            220               340           0

我的数据农场中有更多城市。我可以理解邻接矩阵,但是我不知道如何显示到邻接矩阵,并且代码可以理解 HCM 到 HCM 为 0。

标签: pythonnumpydataframe

解决方案


这是使用 numpy 执行此操作的一种快速方法:
在以下代码d中是距离的 numpy 数组,就像它在数据框中一样,并且n是城市的数量。

d = np.array([1146.72, 220, 340])
n = 3

upperIndices = np.triu_indices(n, k=1)
lowerIndices = np.tril_indices(n, k=-1)

distanceMatrix = np.zeros((n,n))
distanceMatrix[upperIndices] = d
distanceMatrix[lowerIndices] = d

结果:

array([[   0.  , 1146.72,  220.  ],
       [1146.72,    0.  ,  340.  ],
       [ 220.  ,  340.  ,    0.  ]])

请注意,这仅在距离列表正确排序的情况下才有效。


推荐阅读