NetworkX系列教程(11)-graph和其他数据格式转换
学过线性代数的都了解矩阵,在矩阵上的文章可做的很多,什么特征矩阵,单位矩阵等.grpah存储可以使用矩阵,比如graph的邻接矩阵,权重矩阵等,这节主要是在等到graph后,如何快速得到这些信息.详细官方文档在这里
目录:
注意:如果代码出现找不库,请返回第一个教程,把库文件导入.
12.graph和其他数据格式转换
12.1graph与字典(Dict)
- #从字典生成图
- dod = {0: {1: {'weight': 1}}}
- G = nx.from_dict_of_dicts(dod) #或G=nx.Graph(dpl)
- plt.subplots(1,1,figsize=(6,3))
- nx.draw(G, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- #图转换为字典
- print(nx.to_dict_of_dicts(G))

输出:
{0: {1: {'weight': 1}}, 1: {0: {'weight': 1}}}
12.2graph与列表(List)
- #从列表中创建graph
- dol = {0: [1,2,3]}
- edgelist = [(0, 1),(0,3),(2,3)]
- G1 = nx.from_dict_of_lists(dol) #或G=nx.Graph(dol)
- G2=nx.from_edgelist(edgelist)
- #显示graph
- plt.subplots(1,2,figsize=(15,3))
- plt.subplot(121)
- nx.draw(G1, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.subplot(122)
- nx.draw(G2, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- #graph转list
- print(nx.to_dict_of_lists(G1))
- print(nx.to_edgelist(G1))

输出:
{0: [1, 2, 3], 1: [0], 2: [0], 3: [0]}
[(0, 1, {}), (0, 2, {}), (0, 3, {})]
12.3graph与numpy
- #从numpy创建graph
- import numpy as np
- a = np.reshape(np.random.random_integers(0, 1, size=100), (10, 10))
- D = nx.DiGraph(a)
- nx.draw(D, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- #graph返回numpy
- G=nx.Graph()
- G.add_edge(1, 2, weight=7.0, cost=5)
- A1 = nx.to_numpy_matrix(G)
- A2 = nx.to_numpy_recarray(G, dtype=[('weight', float), ('cost', int)])
- print(A1,A2)

输出:
- [[0. 7.]
- [7. 0.]] [[(0., 0) (7., 5)]
- [(7., 5) (0., 0)]]
12.4graph与Scipy
- #从scipy创建graph
- G.clear()
- import scipy as sp
- A = sp.sparse.eye(2, 2, 1)
- G = nx.from_scipy_sparse_matrix(A)
- nx.draw(D, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- #graph返回scipy
- A = nx.to_scipy_sparse_matrix(G)
- print(A.todense())

输出:
- [[0. 1.]
- [1. 0.]]
12.5graph与Pandas
- #从pandas创建graph
- G.clear()
- import pandas as pd
- df = pd.DataFrame([[1, 1], [2, 1]])
- G = nx.from_pandas_adjacency(df)
- nx.draw(D, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- #graph返回scipy
- df = nx.to_pandas_adjacency(G)
- print(df)

输出:
- 0 1
- 0 1.0 2.0
NetworkX系列教程(11)-graph和其他数据格式转换的更多相关文章
- NetworkX系列教程(2)-graph生成器
小书匠Graph图论 本节主要讲解如何快速使用内置的方法生成graph,官方的文档在这里,里面包含了networkX的所有graph生成器,下面的内容只是我节选的内容,并将graph画出来而已. 声明 ...
- NetworkX系列教程(10)-算法之一:最短路径问题
小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...
- NetworkX系列教程(1)-创建graph
小书匠Graph图论 研究中经常涉及到图论的相关知识,而且常常面对某些术语时,根本不知道在说什么.前不久接触了NetworkX这个graph处理工具,发现这个工具已经解决绝大部分的图论问题(也许只是我 ...
- NetworkX系列教程(8)-Drawing Graph
小书匠Graph图论 如果只是简单使用nx.draw,是无法定制出自己需要的graph,并且这样的graph内的点坐标的不定的,运行一次变一次,实际中一般是要求固定的位置,这就需要到布局的概念了.详细 ...
- NetworkX系列教程(7)-对graph进行分析
小书匠Graph图论 graph构建完成后,对graph的连通等属性进行分析. 目录: 8.对图进行分析 8.1连通子图 8.2弱联通 8.3强连通 8.4子图 8.5条件过滤 注意:如果代码出现找不 ...
- NetworkX系列教程(6)-对graph进行操作
小书匠Graph图论 graph生成后,除了有查看操作,还有移除等操作,还有其他更多操作,具体可以看这里.下面将比较graph操作前后的不同. 目录: 7.对图进行操作 7.1移除某些节点和边 7.2 ...
- NetworkX系列教程(5)-查看graph的信息
小书匠Graph图论 有时候graph建好后,我们并不清除该graph内节点的,边的信息,这就需要调用函数去查看了. 目录: 6.查看Graph的信息 6.1查看graph内节点,边的 6.2查看gr ...
- NetworkX系列教程(4)-设置graph的信息
小书匠Graph图论 要画出美观的graph,需要对graph里面的节点,边,节点的布局都要进行设置,具体可以看官方文档:Adding attributes to graphs, nodes, and ...
- NetworkX系列教程(3)-手动创建graph
小书匠Graph图论 不可否认,日常中我们使用最多的还是,使用自己的数据去手动创建自己的图形,而不是使用生成器,现从给graph添加点和边入手,讲解手动创建graph. 目录: 3.给graph添加节 ...
随机推荐
- ElasticSerach 6.x的安装及配置
1.准备工作 安装Centos7.建议内存2G以上.安装java1.8环境,固定IP地址,本文省略. 2.ElasticSerach单机安装 1) 创建/opt/es目录,存放文件ElasticSer ...
- jdbcUrl is required with driverClassName
https://blog.csdn.net/newbie_907486852/article/details/81391525 springboot2.0配置多数据源: spring.datasour ...
- Linux虚拟机设置静态ip
二.设置静态ip dhclient 动态分配ip 修改 ifcfg-ens33网卡配置文件 静态分配ip dhclient -r (释放动态分配的ip地址) vi /etc/sysconfig/ne ...
- 设置body样式问题
如果我给body设置成一个宽高为200px的正方形,背景为红色,但是整个html也变成了红色,而且是整个浏览器屏幕都是红的,怎么来处理,如下 给html单独设置一个背景颜色,比如为白色#fff,在给b ...
- 微信web开发问题记录
问题一.微信浏览器中无法使用reload重载文档[VUE框架] 问题分析: 微信不支持location.reload()方法,在微信浏览器中会失效 Vue中的路由跳转是类似于ajax局部刷新,因此使用 ...
- Linux expect实现自动登录
expect expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令.但当不能使用密钥验证的时候,我们就没有办法 ...
- 【iOS】去除字符串首尾空格或某字符
在iOS的实际开发中,常会出现需要去除空格的情况,总结有三种情况: 去除字符串首尾连续字符(如空格): 去除字符串首部连续字符(如空格): 去除字符串尾部连续字符(如空格): 去除字符串首尾连续字符( ...
- iptables-2基本语法结构
1.规则的概念先说说规则的概念,然后再通俗的解释它.规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理:那么我们来通俗的解释一下什么是iptable ...
- 微信小程序---客服消息接口调用,拿来即用
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 如果对你有帮助的话麻烦点个[推荐]~最好还可以follow一下我的GitHub~感谢观看! 在 ...
- python3+django+mysql
django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,如果使用python3.x版本时,django连接mysql的方法 1.使用pymysql替换MySQ ...