博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NetworkX系列教程(11)-graph和其他数据格式转换
阅读量:6702 次
发布时间:2019-06-25

本文共 2326 字,大约阅读时间需要 7 分钟。

学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后,如何快速得到这些信息.详细官方文档在

目录:


注意:如果代码出现找不库,请返回第一个教程,把库文件导入.

12.graph和其他数据格式转换

12.1graph与字典(Dict)

  1. #从字典生成图 

  2. dod = {
    0: {
    1: {
    'weight': 1}}}  

  3. G = nx.from_dict_of_dicts(dod) #或G=nx.Graph(dpl) 

  4. plt.subplots(1,1,figsize=(6,3)) 

  5. nx.draw(G, with_labels=True, font_weight='bold'

  6. plt.axis('on'

  7. plt.xticks([]) 

  8. plt.yticks([]) 

  9. plt.show() 

  10.  

  11. #图转换为字典 

  12. print(nx.to_dict_of_dicts(G)) 

graph与字典(Dict)示例
graph与字典(Dict)示例

输出:

{0: {1: {'weight': 1}}, 1: {0: {'weight': 1}}}


12.2graph与列表(List)

  1. #从列表中创建graph 

  2. dol = {
    0: [1,2,3]} 

  3. edgelist = [(0, 1),(0,3),(2,3)] 

  4.  

  5. G1 = nx.from_dict_of_lists(dol) #或G=nx.Graph(dol) 

  6. G2=nx.from_edgelist(edgelist) 

  7.  

  8. #显示graph 

  9. plt.subplots(1,2,figsize=(15,3)) 

  10. plt.subplot(121

  11. nx.draw(G1, with_labels=True, font_weight='bold'

  12. plt.axis('on'

  13. plt.xticks([]) 

  14. plt.yticks([]) 

  15. plt.subplot(122

  16. nx.draw(G2, with_labels=True, font_weight='bold'

  17. plt.axis('on'

  18. plt.xticks([]) 

  19. plt.yticks([]) 

  20. plt.show() 

  21.  

  22. #graph转list 

  23. print(nx.to_dict_of_lists(G1)) 

  24. print(nx.to_edgelist(G1)) 

graph与列表(List)示例
graph与列表(List)示例

输出:

{0: [1, 2, 3], 1: [0], 2: [0], 3: [0]}

[(0, 1, {}), (0, 2, {}), (0, 3, {})]


12.3graph与numpy

  1. #从numpy创建graph 

  2. import numpy as np 

  3. a = np.reshape(np.random.random_integers(0, 1, size=100), (10, 10)) 

  4. D = nx.DiGraph(a) 

  5. nx.draw(D, with_labels=True, font_weight='bold'

  6. plt.axis('on'

  7. plt.xticks([]) 

  8. plt.yticks([]) 

  9. plt.show() 

  10.  

  11. #graph返回numpy 

  12. G=nx.Graph() 

  13. G.add_edge(1, 2, weight=7.0, cost=5

  14. A1 = nx.to_numpy_matrix(G) 

  15. A2 = nx.to_numpy_recarray(G, dtype=[('weight', float), ('cost', int)]) 

  16. print(A1,A2) 

graph与numpy示例
graph与numpy示例

输出:

  1. [[0. 7.] 

  2. [7. 0.]] [[(0., 0) (7., 5)] 

  3. [(7., 5) (0., 0)]] 


12.4graph与Scipy

  1. #从scipy创建graph 

  2. G.clear() 

  3. import scipy as sp 

  4. A = sp.sparse.eye(2, 2, 1

  5. G = nx.from_scipy_sparse_matrix(A) 

  6. nx.draw(D, with_labels=True, font_weight='bold'

  7. plt.axis('on'

  8. plt.xticks([]) 

  9. plt.yticks([]) 

  10. plt.show() 

  11.  

  12. #graph返回scipy 

  13. A = nx.to_scipy_sparse_matrix(G) 

  14. print(A.todense()) 

graph与Scipy示例
graph与Scipy示例

输出:

  1. [[0. 1.] 

  2. [1. 0.]] 


12.5graph与Pandas

  1. #从pandas创建graph 

  2. G.clear() 

  3. import pandas as pd 

  4. df = pd.DataFrame([[1, 1], [2, 1]]) 

  5. G = nx.from_pandas_adjacency(df) 

  6. nx.draw(D, with_labels=True, font_weight='bold'

  7. plt.axis('on'

  8. plt.xticks([]) 

  9. plt.yticks([]) 

  10. plt.show() 

  11.  

  12. #graph返回scipy 

  13. df = nx.to_pandas_adjacency(G) 

  14. print(df) 

graph与Pandas示例
graph与Pandas示例

输出:

  1. 0 1 

  2. 0 1.0 2.0 

转载于:https://www.cnblogs.com/wushaogui/p/9240941.html

你可能感兴趣的文章
nodejs 实现文件拷贝
查看>>
laravel框架——composer导入laravel
查看>>
Matrix Computations 1
查看>>
OC-封装、继承、多态
查看>>
Java并发编程(多线程)中的相关概念
查看>>
6-14 数据库高级
查看>>
[QNAP crontab 定時執行程式
查看>>
本地浏览器缓存sessionStorage(临时存储) localStorage(长期存储)的使用
查看>>
[转]windows系统激活
查看>>
读书笔记之何时重构(下)
查看>>
Java---利用程序实现在控制台聊天
查看>>
第一篇 计算机基础
查看>>
Oracle监听器—静态注册
查看>>
《人月神话》观后感
查看>>
python计算机视觉2:图像边缘检测
查看>>
Notepad++ 快捷键 大全
查看>>
1.springboot:入门程序
查看>>
Lua协程
查看>>
Unique Binary Search Trees
查看>>
Apache + Tomcat 配置多个应用
查看>>