根据邻接矩阵计算各点之间的最短路径矩阵(ODM也可以)

本文介绍如何通过Python3和Pandas处理包含邻接矩阵的CSV文件,利用Floyd算法计算任意两点间的最短路径,并输出为新的CSV文件。适用于空间权重矩阵分析和生成ODM。
摘要由CSDN通过智能技术生成

我之前写过一篇将arcgis的swm文件处理成为保存矩阵的文本文件格式的博客,得到的是csv文件。该文件保存的空间权重矩阵。csv文件方便进一步的空间分析。接下分享一下利用存有邻接矩阵的csv文件得到最短路径矩阵(存有任意两个节点之间的最短路径)的csv文件,想获得一般的ODM也同样适用。方法用的是Floyd算法,基于python3,使用pandas和copy模块。

输入文是一个csv文件,存有空间邻接矩阵,1代表相邻,0代表不相邻。比如4和2相邻,4与3不相邻。



import pandas as pd
import copy

A=pd.read_csv(r'E:\atest\NYC\drug\linjie.csv',index_col=0)
#A是邻接矩阵,相邻对象元素为1,不相邻为0

D=copy.deepcopy(A)
#用于储存节点对的最短路径,相邻的为实际权值(本例为1),不相邻设置为很大的数(远大于所有边的权值,本例设置为999)
ilter=[i for i in range(len(A))]
#o代表起始节点ID,d是终点ID,mid是内插节点
for o in ilter:
    for d in ilter:
        if d==o:
            continue
        if D.iloc[o,d]==0:
            D.iloc[o,d]=999
print("得到矩阵D")
#D初始化完毕


#使用Floyd算法计算SP

for mid in il
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值