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库相关推荐

  1. python networkx库分析newmovies数据集

    networkx是一个处理图结构的python第三方库,提供简洁的API,方便用户画图. newmovies.txt保存了相关数据,其中*Vertices 34282 下的每一行为一个节点,表示一位明 ...

  2. python networkx库_python之networkx库小结

    备战数模,还是知道多点好.networkx这个库的话,画网络图贼好用. 一.安装 安装的话,跟其他包的安装差不多吧.我用的是anaconda就不用装了.其他的话,就用pip install netwo ...

  3. python数据挖掘课程】十七.社交网络Networkx库分析人物关系(初识篇)

    #2018-03-30 09:21:39 March Friday the 13 week, the 089 day SZ SSMR python数据挖掘课程]十七.社交网络Networkx库分析人物 ...

  4. python之networkx库小结

    python之networkx库小结(转) 本文转载自 https://blog.csdn.net/your_answer/article/details/79189660 一.安装 安装的话,跟其他 ...

  5. Python_note8 程序设计方法学+Python第三方库安装+os库

    实例13 体育竞技分析 自顶向下,解决复杂问题的有效方法,将一个小问题表达为若干小问题组成的形式,使用同样方法进一步解决小问题直至可以用计算机简单解决:自底向上 理解自顶向下的设计思维:分而治之:理解 ...

  6. Python 可视化库

    https://www.infoq.cn/article/pSV6tZ1SbUC8qJpo_v8H 在奥斯汀举行的SciPy 2018年特别会议上,大量开源 Python 可视化工具的代表分享了他们对 ...

  7. python扩展库丰富吗_python扩展库

    python更新所有的包 1 2 3 4 5 6 7 8> import pip > from subprocess import call > > package_list_ ...

  8. python安装第三方库win10_音频处理 windows10下python三方库librosa安装教程

    librosa是处理音频库里的opencv,使用python脚本研究音频,先安装三方库librosa. 如下通过清华镜像源安装librosa: pip install -i https://pypi. ...

  9. 【Pytorch神经网络理论篇】 27 图神经网络DGL库:简介+安装+卸载+数据集+PYG库+NetWorkx库

    DGL库是由纽约大学和亚马逊联手推出的图神经网络框架,支持对异构图的处理,开源相关异构图神经网络的代码,在GCMC.RGCN等业内知名的模型实现上也取得了很好的效果. 1 DGL库 1.1 DGL库的 ...

最新文章

  1. java23中设计模式——结构模式——Composite(组合)
  2. PowerDesigner的一下简单使用技巧
  3. java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
  4. 【解题报告】Leecode 2057. 值相等的最小索引——Leecode周赛系列
  5. JavaScript简介-1
  6. 检测对抗样本_避免使用对抗性T恤进行检测
  7. sonar java_修复Sonar中常见的Java安全代码冲突
  8. 《大数据》2015年第2期“研究”——大数据时代的数据传输网
  9. php3源码分析,ThinkPHP3.1.3源码分析(一) 入口文件分析
  10. Linux在文件第一列添加字段,linux – 如何将file1的每一列追加到file2的特定字段并创建一个新的输出文件?...
  11. 北京java培训机构收费,Java开发者必看
  12. 紫色范冰冰WIN7主题包
  13. python加密狗的制作_制作u盘加密狗图文教程
  14. 别做正常的傻瓜-读后感
  15. dede密码修改 php,dede忘记后台密码修改程序
  16. 战列舰机械计算机,问个事,二战时期的战列舰可以装备垂直稳定仪么?
  17. Bingo部署成功 纪念一下
  18. ubuntu系统修改分辨率为2560*1440(2k,16:9)
  19. macOS Big Sur 11.2 (20D64) 正式版发布,百度网盘下载
  20. MySQL数据库(数据库约束)

热门文章

  1. WNMP(windows+nginx+mysql+php)环境搭建
  2. 电信传输_第六章_光纤接入网
  3. 三星android 8.0的变化,三星发布最新android 8.0升级计划 最快11月部分升级
  4. [工具推荐]IPv6 在线 Ping 测试
  5. 如何构建产品帮助中心?
  6. 6行Python 用邮编找地址(邮编——>省、市、区)
  7. 自动生成数据库设计文档利器
  8. Windwos10启动后 Print Spooler 服务不能自动启动的解决方法
  9. tl wdr5620虚拟服务器,TP-Link TL-WDR5620无线桥接怎么设置?
  10. RGB、LVDS、MIPI和EDP接口液晶屏