首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Shapefile中获取邻接矩阵

从Shapefile中获取邻接矩阵
EN

Stack Overflow用户
提问于 2017-09-13 15:17:09
回答 1查看 1.7K关注 0票数 1

我有一个文件夹,里面有关于英国电网的shapefiles文件。我需要从tese文件中提取这个网络的邻接矩阵。由于我没有使用shapefiles的经验,我需要一个明确的解释,如何得到这样的矩阵。

所谓邻接矩阵,我指的是一个维数与网络节点数相同的平方矩阵,它的单元格中有零点,指两个未连接的节点,而在单元格中有一个表示两个已连接的节点。我需要这样的矩阵,因为我想在这个网络上测试一个流行病学系统,这就是英国国家电网。

我尝试在Python上运行这段代码:

代码语言:javascript
复制
    import networkx as nx
import pickle as serializer
#from osgeo import ogr
#import gdal
#import graphviz as pgv
G=nx.read_shp('NationalGrid-ElecTrans-MT-2012_Nodes.shp')
A = nx.adjacency_matrix(G)
nx.draw(G)
#nx.average_shortest_path_length(G)
#nx.degree(G)
#nx.density(G)
#nx.betweenness_centrality(G)
with open('some_file3.txt', 'w') as f:
    serializer.dump( A, f)

但是现在我不知道如何使用输出,我正在附加输出。https://ufile.io/3917f

EN

回答 1

Stack Overflow用户

发布于 2017-09-14 10:31:44

nx.adj_matrix(G)返回SciPy sparse matrix,您可能需要DataFrame或数组。使用nx.convert.to_dict_of_dicts(G)

代码语言:javascript
复制
import pandas as pd
import networkx as nx
G = nx.Graph()
G.add_cycle([1,2,3,4,5])
G.add_cycle([33,3,34,35])
A = pd.DataFrame(nx.convert.to_dict_of_dicts(G)).fillna(0).replace([{}],1)
out: 

    1   2   3   4   5   33  34  35
1   0   1   0   0   1   0   0   0
2   1   0   1   0   0   0   0   0
3   0   1   0   1   0   1   1   0
4   0   0   1   0   1   0   0   0
5   1   0   0   1   0   0   0   0
33  0   0   1   0   0   0   0   1
34  0   0   1   0   0   0   0   1
35  0   0   0   0   0   1   1   0

或更好:

代码语言:javascript
复制
A = nx.convert_matrix.to_pandas_dataframe(K)

如果需要numpy数组,可以通过A.values获得值,如果需要numpy矩阵:

代码语言:javascript
复制
A = nx.convert_matrix.to_numpy_matrix(K)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46201185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档