小书匠 Graph 图论 

学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.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. print(nx.to_dict_of_dicts(G)) 


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. G1 = nx.from_dict_of_lists(dol) #或G=nx.Graph(dol) 

  5. G2=nx.from_edgelist(edgelist) 


  6. #显示graph 

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

  8. plt.subplot(121) 

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

  10. plt.axis('on') 

  11. plt.xticks([]) 

  12. plt.yticks([]) 

  13. plt.subplot(122) 

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

  15. plt.axis('on') 

  16. plt.xticks([]) 

  17. plt.yticks([]) 

  18. plt.show() 


  19. #graph转list 

  20. print(nx.to_dict_of_lists(G1)) 

  21. print(nx.to_edgelist(G1)) 


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. #graph返回numpy 

  11. G=nx.Graph() 

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

  13. A1 = nx.to_numpy_matrix(G) 

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

  15. print(A1,A2) 


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. #graph返回scipy 

  12. A = nx.to_scipy_sparse_matrix(G) 

  13. print(A.todense()) 


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. #graph返回scipy 

  12. df = nx.to_pandas_adjacency(G) 

  13. print(df) 


graph与Pandas示例

输出:

  1. 0 1 

  2. 0 1.0 2.0 

NetworkX系列教程(11)-graph和其他数据格式转换的更多相关文章

  1. NetworkX系列教程(2)-graph生成器

    小书匠Graph图论 本节主要讲解如何快速使用内置的方法生成graph,官方的文档在这里,里面包含了networkX的所有graph生成器,下面的内容只是我节选的内容,并将graph画出来而已. 声明 ...

  2. NetworkX系列教程(10)-算法之一:最短路径问题

    小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...

  3. NetworkX系列教程(1)-创建graph

    小书匠Graph图论 研究中经常涉及到图论的相关知识,而且常常面对某些术语时,根本不知道在说什么.前不久接触了NetworkX这个graph处理工具,发现这个工具已经解决绝大部分的图论问题(也许只是我 ...

  4. NetworkX系列教程(8)-Drawing Graph

    小书匠Graph图论 如果只是简单使用nx.draw,是无法定制出自己需要的graph,并且这样的graph内的点坐标的不定的,运行一次变一次,实际中一般是要求固定的位置,这就需要到布局的概念了.详细 ...

  5. NetworkX系列教程(7)-对graph进行分析

    小书匠Graph图论 graph构建完成后,对graph的连通等属性进行分析. 目录: 8.对图进行分析 8.1连通子图 8.2弱联通 8.3强连通 8.4子图 8.5条件过滤 注意:如果代码出现找不 ...

  6. NetworkX系列教程(6)-对graph进行操作

    小书匠Graph图论 graph生成后,除了有查看操作,还有移除等操作,还有其他更多操作,具体可以看这里.下面将比较graph操作前后的不同. 目录: 7.对图进行操作 7.1移除某些节点和边 7.2 ...

  7. NetworkX系列教程(5)-查看graph的信息

    小书匠Graph图论 有时候graph建好后,我们并不清除该graph内节点的,边的信息,这就需要调用函数去查看了. 目录: 6.查看Graph的信息 6.1查看graph内节点,边的 6.2查看gr ...

  8. NetworkX系列教程(4)-设置graph的信息

    小书匠Graph图论 要画出美观的graph,需要对graph里面的节点,边,节点的布局都要进行设置,具体可以看官方文档:Adding attributes to graphs, nodes, and ...

  9. NetworkX系列教程(3)-手动创建graph

    小书匠Graph图论 不可否认,日常中我们使用最多的还是,使用自己的数据去手动创建自己的图形,而不是使用生成器,现从给graph添加点和边入手,讲解手动创建graph. 目录: 3.给graph添加节 ...

随机推荐

  1. MVC-08模型

    部分7:添加数据模型. MVC模型 MVC模型包含所有应用程序逻辑(业务逻辑.验证逻辑.数据访问逻辑),除了纯视图和控制器逻辑. 通过MVC,模型可保存并操作应用程序数据. Models文件夹 Mod ...

  2. 5_PHP数组_3_数组处理函数及其应用_1_快速创建数组的函数

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 一.快速创建数组的函数 1. range() 函数 程序: <?php $numbers = range(1 ...

  3. OpenJML入门

    目录 OpenJML 获取 下载 使用 Linux Windows Parsing and Type-checking Extended Static Checking Runtime Asserti ...

  4. 【方法】list<?> 两个list集合 查找不同元素,求差值

    //方法1 //自己声明list//思路,从list1中删除list2中相同的元素//使用循环遍历对比的方式删除//list1包含list2,list1多与list2//结束得出list1为不相同元素 ...

  5. Fatal error: Uncaught Error: Call to a member function bind_param() on boolean

    1.2019年10月22日 PHP写mysqli 预编译查询的时候报错. Fatal error: Uncaught Error: Call to a member function bind_par ...

  6. 只要200行JavaScript代码,就能把特斯拉汽车带到您身边

    Jerry的前一篇文章 如何使用JavaScript开发AR(增强现实)移动应用 (一) 介绍了用React-Native + ViroReact开发增强现实应用的一些预备知识. 本文咱们开始进入增强 ...

  7. Lerp

    Lerp,就是返回两个值之间的插值,一般有三个参数.第一个参数为初始值,第二个参数为最终值,插值为0~1d的一个浮点数值,为0时为初始值,1时为最终值,为0到1之间的数值时返回一个混合数值.若第三个参 ...

  8. Android笔记(五十六) Android四大组件之一——ContentProvider,实现自己的ContentProvider

    有时候我们自己的程序也需要向外接提供数据,那么就需要我们自己实现ContentProvider. 自己实现ContentProvider的话需要新建一个类去继承ContentProvider,然后重写 ...

  9. The Essential Burp Suite

    OK   we have download teh burp suite .let's begin start the tool 1.if  we  want to use the total mem ...

  10. VLAN实验3:理解Hybrid接口的应用

    实验环境 实验拓扑图 实验编址 实验步骤1.基本配置按照实验编址为PC配置IP地址,以PC5为例 在PC5与PC1通过ping命令测试,发现通讯正常.(以此为例,其他的我就不一一截图测试了.) 在S1 ...