NetworkX 图网络处理工具包
2020-04-01 18:40
169 查看
简单介绍
NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
这个工具包对于图网络的处理非常有用,涵盖了很多算法,用法也非常友好。这里也贴出几个常用链接:
建议直接下一份pdf放着随时查。接下来直接说常规用法,首先:
import networkx as nxGraph 创建
既然是处理网络,首先需要创建一个图对象,类型有:
G = nx.Graph() # 无向图 G = nx.DiGraph() # 有向图 G = nx.MultiGraph() # 多重无向图 G = nx.MultiDigraph() # 多重有向图 G.clear() # 清空图
接着,需要给图添加内容,比如加点,加边:
G.add_edge(1, 2) # default edge data=1 G.add_edge(2, 3, weight=0.9) # specify edge data # 如果是边有许多的权,比如有长度和宽度的属性,那么: G.add_edge(n1, n2, length=2, width=3) elist = [(1, 2), (2, 3), (1, 4), (4, 2)] G.add_edges_from(elist) elist = [('a', 'b', 5.0), ('b', 'c', 3.0), ('a', 'c', 1.0), ('c', 'd', 7.3)] G.add_weighted_edges_from(elist) # 如果给结点的名称是其它符号,想离散化成从x开始的数字标记,那么: G = nx.convert_node_labels_to_integers(G, first_label=x)Graph 信息的获取
nx.info(G) # 图信息的概览 G.number_of_nodes() G.number_of_edges() # 获取和节点idx连接的边的attr属性之和 G.in_degree(idx, weight='attr') # 如果想知道某个结点相连的某个边权之和: DG.degree(nodeIdx, weight='weightName') # 获取结点或者边的属性集合,返回的是元组的列表 G.nodes.data('attrName') G.edges.data('attrName') # 获取n1 n2的边的length权重,那么: G[n1][n2]['length'] # 如果是有重边的图,选择n1,n2第一条边的length权重,则: G[n1][n2][0]['length'] # 获取n1结点的所有邻居 nx.all_neighbors(G, n1) # 判断图中n1到n2是否存在路径 nx.has_path(G, n1, n2) # 根据一个结点的list,获取子图 subG = nx.subgraph(G, nodeList)Graph 其他内置算法
# 最短路算法 返回最短路的路径列表 nx.shortest_path(G, n1, n2, method='dijkstra') # 以及各种图的算法,比如流,割等等等等,大家可以看文档探索下Graph 的绘制
# 最简单的绘制 import matplotlib.pyplot as plt nx.draw(G) plt.show() # 设置其他乱七八糟的参数 nx.draw(G, with_labels=True, pos = nx.sprint_layout(G), node_color=color_list, edge_color='k', node_size=100, node_shape='o', linewidths=2, width=1.0, alpha=0.55, style='solid', font_size=9, font_color='k' )
转载于:https://www.cnblogs.com/Rosebud/p/10483560.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Networkx图与网络工具包
- python复杂网络处理模块networkx
- 阿里云(四)Linux 实例常用内核网络参数介绍与常见问题处理
- Reactive Cocoa 处理多个网络请求的问题
- 网络处理Bug
- iOS---对AFNetworking进行二次封装,使用单例单独处理网络请求数据
- Python爬虫/文本处理/科学计算/机器学习——工具包总结
- webview无网络或错误处理
- 网络故障现场处理实践(第2版)
- ip网络工具包
- Android网络连接判断与处理
- 【整理】时间的处理--与网络时间同步
- 人工智能和机器人网站、图像处理网络资源
- epson me 1+只有主机能打印不能共享网络打印问题的处理
- 图片、缓存-Android仿人人客户端(v5.7.1)——对从服务器端(网络)获取的图片进行本地双缓存处理(编码实现)-by小雨
- MKNetworkKit: 网络处理又一利器
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法
- 网络IO与逻辑处理的分离
- Android仿人人客户端(v5.7.1)——网络模块处理的架构
- 网络异常处理