创建邻接矩阵,计算多个城市之间的距离

时间:2019-03-04 09:26:32

标签: python numpy dataframe

我目前有这样的数据

                   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。

2 个答案:

答案 0 :(得分:1)

这是使用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.  ]])

请注意,这仅在正确配置了辩护清单之后才能起作用。

答案 1 :(得分:0)

  1. 首先创建一个包含所有不同城市的列表。
  2. 列表中元素的数量为n
  3. 创建一个x = np.zeros((n,n))的numpy数组
  4. 对于数据框中的每条记录,从列表中查找城市索引。让我表示为i,j,距离为d,然后更新x[i,j]=d

希望这会有所帮助。

相关问题