python - 创建邻接矩阵计算多个城市之间的距离
问题描述
我目前有这样的数据
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。
解决方案
这是使用 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. ]])
请注意,这仅在距离列表正确排序的情况下才有效。
推荐阅读
- iphone - 如何使用 Facebook IOS 等动画视图创建底部操作表
- angularjs - Java、Struts 1.2、Json Angular JS - 如何从动作类获取 json 响应到我的 Angular JS 页面?
- javascript - 使用 JavaScript 添加 Html 表头
- safari - 更新 Safari 应用程序扩展内容阻止程序列表
- swift - 在另一个实体CoreDataRelationships下保存实体数组
- python - 读取多个excel文件并将其写入python中的多个excel文件
- c# - 通用对象的创建模式
- wordpress - wordpress url后的数字不显示404
- node.js - 使用 GraphQL 和 NodeJS INSERT INTO 后 PostgreSQL“输入结束时的语法错误”
- sql - 如何在数据库链接上运行行数?