Python networkx库
NetworkX 是用于创建、操作复杂图数据结构的 Python 包。
安装:
pip install networkx
1. 增删节点和边
import networkx as nxG = nx.Graph()G.add_node(1) # 添加一个节点
G.add_nodes_from([2, 3]) # 添加多个节点G.remove_node(1) # 删除一个节点
G.remove_nodes_from([2, 3]) # 删除多个节点G.add_edge(1, 2) # 添加一条边
G.add_edges_from([(1, 3), (2, 3)]) # 添加多条边G.remove_edge(1, 2) # 删除一条边
G.remove_edges_from([(1, 3), (2, 3)]) # 删除多条边n_nodes = G.number_of_nodes() # 节点数
n_edges = G.number_of_edges() # 边数
图的节点甚至可以是另一个图:
G1 = nx.Graph()
G2 = nx.Graph()G.add_nodes_from([G1, G2])
G.add_edge(G1, G2)
2. 文件操作
(1)边列表格式
在边列表文件中,每一行表示一条边(以及可选的属性):
1 2
1 3
2 3
# 将图以边列表的形式保存至文件(不写入边属性)
nx.write_edgelist(G, 'edgelist.txt', data=False)# 读取边列表文件,并构建图(节点类型为 int)
G = nx.read_edgelist('edgelist.txt', nodetype=int)
(2)gml格式
gml 格式如下:
graph
[directed 0node[id 0label "BrighamYoung"value 7]node[id 1label "FloridaState"value 0]...edge[source 1target 0]...
# 写入文件
nx.write_gml(G, 'football.gml')# 读取文件,并构建图
G = nx.read_gml('football.gml', label='id')
3. 获取邻接矩阵
G: nx.Graph = nx.read_edgelist('../data/karate.txt')A = nx.adj_matrix(G).todense()
print(A)
[[0 1 1 ... 0 0 0]...[0 0 0 ... 0 1 0]]
4. 节点和边属性
属性可自定义。
(1)节点属性
# color 属性
G.add_node(1, color="red")
G.add_nodes_from([(2, {"color": "green"}), (3, {"color": "blue"})])attr = G.nodes[1] # {'color': 'red'}
G.nodes[1]['color'] = 'black'
(2)边属性
# weight 属性
G.add_edge(1, 2, weight=4.7)
G.add_edges_from([(1, 3, {'weight': 2.3}), (2, 3, {'weight': 6.5})])attr = G[1][2] # {'weight': 4.7}
G[1][2]['weight'] = 4.8
5. 遍历节点
(1)遍历节点、节点属性
G = nx.read_gml('../data/football.gml', label='id')for node in G.nodes():print(f"{node}: {G.nodes[node]}")
0: {'label': 'BrighamYoung', 'value': 7}
1: {'label': 'FloridaState', 'value': 0}
...
或:
G = nx.read_gml('../data/football.gml', label='id')for node, attr in G.nodes(data='label'):print(f'{node}: {attr}')
0: BrighamYoung
1: FloridaState
...
(2)遍历节点、邻居、连边属性
# 节点及其邻居节点
for node, neighs in G.adj.items():# 邻居节点及连边属性for neigh, edge_attr in neighs.items():print(f"({node}, {neigh}, {edge_attr})")
(1, 2, {'weight': 4.7})
(1, 3, {'weight': 2.3})
(2, 1, {'weight': 4.7})
(2, 3, {'weight': 6.5})
(3, 1, {'weight': 2.3})
(3, 2, {'weight': 6.5})
6. 遍历边
(1)遍历边
G: nx.Graph = nx.read_gml('../data/football.gml', label='id')for edge in G.edges():print(edge)
(0, 1)
(0, 4)
...
(2)遍历边、边属性
G = nx.Graph()G.add_node(1, color="red")
G.add_nodes_from([(2, {"color": "green"}), (3, {"color": "blue"})])
G.add_edge(1, 2, weight=4.7)
G.add_edges_from([(1, 3, {'weight': 2.3}), (2, 3, {'weight': 6.5})])for u, v in G.edges():print(f'edge: ({u}, {v}), attrs: {G[u][v]}')
edge: (1, 2), attrs: {'weight': 4.7}
edge: (1, 3), attrs: {'weight': 2.3}
edge: (2, 3), attrs: {'weight': 6.5}
或者:
for edge, attrs in G.edges().items():print(f'edge: {edge}, attrs: {attrs}')
7. 可视化
import networkx as nx
import matplotlib.pyplot as pltG = nx.Graph()
G.add_nodes_from([1, 2, 3])
G.add_edges_from([(1, 2), (1, 3), (2, 3)])# 节点对应的类别,不同类别的节点染不同颜色
partition = {1: 0,2: 1,3: 0,
}pos = nx.spring_layout(G)# 分别绘制节点、边、节点标签
nx.draw_networkx_nodes(G, pos, partition.keys(), node_size=300,alpha=0.3, node_color=list(partition.values()))
nx.draw_networkx_edges(G, pos, alpha=0.5)
nx.draw_networkx_labels(G, pos)plt.show()
8. 获取邻居节点
G = nx.Graph()
G.add_edges_from([(1,2),(1,0),(0,2)])neighs = list(G.neighbors(0)) # [1, 2]
Python networkx库相关推荐
- python networkx库分析newmovies数据集
networkx是一个处理图结构的python第三方库,提供简洁的API,方便用户画图. newmovies.txt保存了相关数据,其中*Vertices 34282 下的每一行为一个节点,表示一位明 ...
- python networkx库_python之networkx库小结
备战数模,还是知道多点好.networkx这个库的话,画网络图贼好用. 一.安装 安装的话,跟其他包的安装差不多吧.我用的是anaconda就不用装了.其他的话,就用pip install netwo ...
- python数据挖掘课程】十七.社交网络Networkx库分析人物关系(初识篇)
#2018-03-30 09:21:39 March Friday the 13 week, the 089 day SZ SSMR python数据挖掘课程]十七.社交网络Networkx库分析人物 ...
- python之networkx库小结
python之networkx库小结(转) 本文转载自 https://blog.csdn.net/your_answer/article/details/79189660 一.安装 安装的话,跟其他 ...
- Python_note8 程序设计方法学+Python第三方库安装+os库
实例13 体育竞技分析 自顶向下,解决复杂问题的有效方法,将一个小问题表达为若干小问题组成的形式,使用同样方法进一步解决小问题直至可以用计算机简单解决:自底向上 理解自顶向下的设计思维:分而治之:理解 ...
- Python 可视化库
https://www.infoq.cn/article/pSV6tZ1SbUC8qJpo_v8H 在奥斯汀举行的SciPy 2018年特别会议上,大量开源 Python 可视化工具的代表分享了他们对 ...
- python扩展库丰富吗_python扩展库
python更新所有的包 1 2 3 4 5 6 7 8> import pip > from subprocess import call > > package_list_ ...
- python安装第三方库win10_音频处理 windows10下python三方库librosa安装教程
librosa是处理音频库里的opencv,使用python脚本研究音频,先安装三方库librosa. 如下通过清华镜像源安装librosa: pip install -i https://pypi. ...
- 【Pytorch神经网络理论篇】 27 图神经网络DGL库:简介+安装+卸载+数据集+PYG库+NetWorkx库
DGL库是由纽约大学和亚马逊联手推出的图神经网络框架,支持对异构图的处理,开源相关异构图神经网络的代码,在GCMC.RGCN等业内知名的模型实现上也取得了很好的效果. 1 DGL库 1.1 DGL库的 ...
最新文章
- java23中设计模式——结构模式——Composite(组合)
- PowerDesigner的一下简单使用技巧
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
- 【解题报告】Leecode 2057. 值相等的最小索引——Leecode周赛系列
- JavaScript简介-1
- 检测对抗样本_避免使用对抗性T恤进行检测
- sonar java_修复Sonar中常见的Java安全代码冲突
- 《大数据》2015年第2期“研究”——大数据时代的数据传输网
- php3源码分析,ThinkPHP3.1.3源码分析(一) 入口文件分析
- Linux在文件第一列添加字段,linux – 如何将file1的每一列追加到file2的特定字段并创建一个新的输出文件?...
- 北京java培训机构收费,Java开发者必看
- 紫色范冰冰WIN7主题包
- python加密狗的制作_制作u盘加密狗图文教程
- 别做正常的傻瓜-读后感
- dede密码修改 php,dede忘记后台密码修改程序
- 战列舰机械计算机,问个事,二战时期的战列舰可以装备垂直稳定仪么?
- Bingo部署成功 纪念一下
- ubuntu系统修改分辨率为2560*1440(2k,16:9)
- macOS Big Sur 11.2 (20D64) 正式版发布,百度网盘下载
- MySQL数据库(数据库约束)
热门文章
- WNMP(windows+nginx+mysql+php)环境搭建
- 电信传输_第六章_光纤接入网
- 三星android 8.0的变化,三星发布最新android 8.0升级计划 最快11月部分升级
- [工具推荐]IPv6 在线 Ping 测试
- 如何构建产品帮助中心?
- 6行Python 用邮编找地址(邮编——>省、市、区)
- 自动生成数据库设计文档利器
- Windwos10启动后 Print Spooler 服务不能自动启动的解决方法
- tl wdr5620虚拟服务器,TP-Link TL-WDR5620无线桥接怎么设置?
- RGB、LVDS、MIPI和EDP接口液晶屏