网站参数修改壹六八信息科技网站建设

张小明 2025/12/27 23:30:21
网站参数修改,壹六八信息科技网站建设,wordpress主题域名授权,seo关键词优化怎么做NetworkX 库介绍与使用指南 NetworkX 是 Python 中用于创建、操作和分析复杂网络#xff08;图结构#xff09; 的核心库#xff0c;支持无向图、有向图、加权图、多重图等多种图类型#xff0c;内置丰富的图算法#xff08;路径分析、连通性、中心性、社区检测等#xf…NetworkX 库介绍与使用指南NetworkX 是 Python 中用于创建、操作和分析复杂网络图结构的核心库支持无向图、有向图、加权图、多重图等多种图类型内置丰富的图算法路径分析、连通性、中心性、社区检测等广泛应用于社交网络分析、网络拓扑研究、路径规划等场景。一、安装使用pip安装最新版本pipinstallnetworkx# 基础安装pipinstallnetworkx[all]# 包含所有依赖如可视化、算法扩展验证安装我使用的版本是 3.6.1importnetworkxasnxprint(nx.__version__)# 输出版本号如 3.2.1二、核心概念概念说明节点Node图的基本单元可绑定任意可哈希对象整数、字符串、元组、自定义对象等边Edge连接节点的关系可绑定属性如权重、标签、时间戳图类型-Graph无向图默认无自环/多重边-DiGraph有向图-MultiGraph无向多重图允许多条边连同一对节点-MultiDiGraph有向多重图三、基础操作创建与编辑图1. 创建图初始化不同类型的图# 1. 无向图默认Gnx.Graph()# 2. 有向图DGnx.DiGraph()# 3. 无向多重图允许多条边连接同一节点对MGnx.MultiGraph()# 4. 有向多重图MDGnx.MultiDiGraph()2. 添加节点单个节点add_node()多个节点add_nodes_from()带属性的节点如节点名称、权重# 添加单个节点G.add_node(1)# 节点为整数G.add_node(A,weight0.8,label核心节点)# 节点为字符串带属性# 添加多个节点可迭代对象G.add_nodes_from([2,3,4])# 批量添加带属性的节点G.add_nodes_from([(5,{weight:0.5,label:普通节点}),(6,{weight:0.3})])# 从另一个图导入节点G2nx.Graph()G2.add_nodes_from(G.nodes)# 复制G的所有节点3. 添加边单个边add_edge()多个边add_edges_from()带权重/属性的边# 添加单个边连接节点1和2G.add_edge(1,2)# 带权重的边G.add_edge(2,3,weight5.0,label强连接)# 添加多个边列表形式每个元素为(节点u, 节点v)或(节点u, 节点v, 属性字典)G.add_edges_from([(3,4),(4,5,{weight:2.0}),(5,6,{weight:1.0,label:弱连接})])# 多重图添加多条边同一节点对MG.add_edge(1,2,key0,weight1.0)# key区分同节点对的不同边MG.add_edge(1,2,key1,weight2.0)4. 删除节点/边# 删除单个节点G.remove_node(6)# 删除多个节点G.remove_nodes_from([4,5])# 删除单个边G.remove_edge(1,2)# 删除多个边G.remove_edges_from([(2,3),(3,4)])# 清空所有节点/边G.clear()5. 查询图信息# 1. 节点相关print(所有节点,list(G.nodes))# 输出节点列表print(节点数量,G.number_of_nodes())# 输出节点数print(节点1的属性,G.nodes[1])# 获取节点1的属性需先添加属性# 2. 边相关print(所有边,list(G.edges))# 输出边列表print(边数量,G.number_of_edges())# 输出边数print(边(2,3)的属性,G.edges[2,3])# 获取边(2,3)的属性# 3. 邻接节点与指定节点相连的节点print(节点2的邻接节点,list(G.neighbors(2)))# 4. 图的基本信息n_nodesG.number_of_nodes()n_edgesG.number_of_edges()avg_degree2*n_edges/n_nodes# 无向图平均度计算方式print(f图的摘要节点数{n_nodes}, 边数{n_edges}, 平均度{avg_degree:.2f})四、图分析常用算法与指标NetworkX 内置大量图分析算法以下是高频使用场景1. 度Degree分析度表示节点的边数有向图区分入度in_degree和出度out_degree# 无向图节点的度print(节点2的度,G.degree[2])# 带权重的度求和所有边的权重print(节点2的加权度,G.degree(2,weightweight))# 有向图入度/出度DG.add_edges_from([(1,2),(2,3),(3,2)])print(节点2的入度,DG.in_degree[2])# 21→2、3→2print(节点2的出度,DG.out_degree[2])# 12→32. 路径分析最短路径无权重/加权# 重置图确保可运行Gnx.Graph()G.add_edges_from([(1,2,{weight:1}),(2,3,{weight:5}),(1,3,{weight:10}),(3,4,{weight:2})])# 1. 无权重最短路径节点数最少shortest_pathnx.shortest_path(G,source1,target4)print(无权重最短路径,shortest_path)# [1,2,3,4]# 2. 加权最短路径Dijkstra算法weighted_shortest_pathnx.shortest_path(G,source1,target4,weightweight)print(加权最短路径,weighted_shortest_path)# [1,2,3,4]# 加权最短路径长度path_lengthnx.shortest_path_length(G,source1,target4,weightweight)print(加权路径长度,path_length)# 15283. 连通性分析无向图连通分量子图内任意节点可达有向图强连通分量双向可达/弱连通分量忽略方向后可达# 无向图连通分量G3nx.Graph()G3.add_edges_from([(1,2),(3,4),(4,5)])componentslist(nx.connected_components(G3))print(连通分量,components)# [{1,2}, {3,4,5}]# 有向图强连通分量DG3nx.DiGraph()DG3.add_edges_from([(1,2),(2,1),(2,3),(3,4)])strong_componentslist(nx.strongly_connected_components(DG3))print(强连通分量,strong_components)# [{1,2}, {3}, {4}]4. 节点中心性衡量节点重要性中心性类型说明函数度中心性节点度占总节点数的比例nx.degree_centrality()介数中心性节点出现在最短路径的比例nx.betweenness_centrality()接近中心性节点到其他节点的平均距离nx.closeness_centrality()示例# 计算度中心性degree_centralitynx.degree_centrality(G)print(度中心性,degree_centrality)# {1:0.333, 2:0.666, 3:0.666, 4:0.333}# 计算介数中心性加权betweennessnx.betweenness_centrality(G,weightweight)print(介数中心性,betweenness)五、图的可视化NetworkX 结合 Matplotlib 实现可视化支持自定义节点/边样式基础可视化importmatplotlib.pyplotasplt# 重置示例图Gnx.Graph()G.add_edges_from([(1,2,{weight:1}),(2,3,{weight:5}),(1,3,{weight:10}),(3,4,{weight:2})])# 1. 基础布局spring_layout力导向布局模拟物理引力posnx.spring_layout(G)# 计算节点位置# 2. 绘制节点自定义大小、颜色nx.draw_networkx_nodes(G,pos,node_size800,node_colorlightblue)# 3. 绘制边自定义宽度根据权重缩放edge_weights[G[u][v][weight]foru,vinG.edges]nx.draw_networkx_edges(G,pos,width[w*0.5forwinedge_weights],edge_colorgray)# 4. 绘制节点标签、边权重nx.draw_networkx_labels(G,pos,font_size12)nx.draw_networkx_edge_labels(G,pos,edge_labels{(u,v):G[u][v][weight]foru,vinG.edges})# 5. 隐藏坐标轴plt.axis(off)plt.title(加权无向图可视化)plt.show()常用布局布局函数适用场景spring_layout()通用力导向布局最常用circular_layout()节点环形排列random_layout()节点随机排列kamada_kawai_layout()优化节点间距离更美观shell_layout()节点分层排列如社交网络层级六、综合示例社交网络分析# 1. 创建社交网络无向图social_graphnx.Graph()# 2. 添加节点用户带属性年龄、性别social_graph.add_nodes_from([(Alice,{age:25,gender:F}),(Bob,{age:30,gender:M}),(Charlie,{age:28,gender:M}),(Diana,{age:26,gender:F}),(Eve,{age:27,gender:F})])# 3. 添加边好友关系带权重亲密度1-10social_graph.add_edges_from([(Alice,Bob,{intimacy:9}),(Alice,Charlie,{intimacy:6}),(Bob,Diana,{intimacy:8}),(Charlie,Diana,{intimacy:5}),(Diana,Eve,{intimacy:7}),(Alice,Eve,{intimacy:4})])# 4. 分析# (1) 每个用户的好友数度print( 好友数 )foruserinsocial_graph.nodes:print(f{user}:{social_graph.degree[user]}个好友)# (2) 亲密度加权的度中心性print(\n 亲密度中心性 )intimacy_centralitynx.degree_centrality(social_graph,weightintimacy)foruser,scoreinintimacy_centrality.items():print(f{user}:{score:.2f})# (3) Alice到Eve的最短路径按亲密度加权print(\n Alice到Eve的最短路径 )pathnx.shortest_path(social_graph,sourceAlice,targetEve,weightintimacy)path_lengthnx.shortest_path_length(social_graph,sourceAlice,targetEve,weightintimacy)print(f路径{ → .join(path)}总亲密度{path_length})# (4) 可视化posnx.kamada_kawai_layout(social_graph)nx.draw_networkx_nodes(social_graph,pos,node_size1000,node_color[pinkifsocial_graph.nodes[n][gender]Felselightblueforninsocial_graph.nodes])nx.draw_networkx_edges(social_graph,pos,width[e[intimacy]*0.3foru,v,einsocial_graph.edges(dataTrue)])nx.draw_networkx_labels(social_graph,pos,font_size12)nx.draw_networkx_edge_labels(social_graph,pos,edge_labels{(u,v):e[intimacy]foru,v,einsocial_graph.edges(dataTrue)})plt.axis(off)plt.title(社交网络亲密度分析)plt.show()七、进阶扩展读取/保存图支持 GraphML、GEXF、Pajek 等格式# 保存为GraphMLnx.write_graphml(G,my_graph.graphml)# 读取GraphMLG_loadednx.read_graphml(my_graph.graphml)社区检测使用nx.community模块如 Louvain 算法fromnetworkx.algorithmsimportcommunity communitiescommunity.louvain_communities(G,weightweight)与其他库结合高性能计算结合igraph/graph-tool处理大规模图可视化增强结合Pyvis交互式可视化、Plotly动态图。总结NetworkX 是 Python 图分析的入门与核心工具优势在于易用性强、API 直观、内置算法丰富适合中小规模图百万节点以内的分析若需处理超大规模图可结合Dask分布式计算或专用图数据库如 Neo4j。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

广州制作网站公司哪家好第一个做电子商务的网站

分布式追踪工具终极对比:Jaeger与Zipkin完整指南 【免费下载链接】orleans dotnet/orleans: Orleans是由微软研究团队创建的面向云应用和服务的分布式计算框架,特别适合构建虚拟 actor模型的服务端应用。Orleans通过管理actors生命周期和透明地处理网络通…

张小明 2025/12/26 18:46:29 网站建设

公司网站设计需要什么株洲做网站多少钱

GEO的兴起,远不止是一种营销技术的迭代。它像一股暗流,正在深刻重构从信息生产、传播到消费的全链条,催生一个全新的信息生态系统。理解这一系统性变革,才能把握GEO真正的战略高度。一、链条重塑:从“发布-索引-排名”…

张小明 2025/12/27 19:40:38 网站建设

淘宝做图片的网站江宁建设局网站

OpenArk完全解析:Windows系统安全分析的8大实用技巧 【免费下载链接】OpenArk The Next Generation of Anti-Rookit(ARK) tool for Windows. 项目地址: https://gitcode.com/GitHub_Trending/op/OpenArk OpenArk作为Windows平台上的开源反Rootkit工具&#x…

张小明 2025/12/26 18:45:21 网站建设

昆明c2c网站建设稳赚导师免费赚钱微信号

最近后台被问爆了!不管是刚入行的技术小白,还是想转型的资深程序员,都在纠结两个问题:“现在切入大模型应用开发还来得及吗?”“零基础没算法功底能学会吗?” 其实答案很明确——当下正是入局大模型应用开发…

张小明 2025/12/26 18:44:47 网站建设

网站地域分站怎么做wordpress二次开发手册chm

GTK+ 额外小部件的深入解析 在 GTK+ 开发中,有一些小部件由于各种原因未在之前的内容中详细介绍。本文将深入探讨这些额外的 GTK+ 小部件,包括绘图小部件、日历、状态图标、打印支持、最近文件管理以及自动完成功能等。 1. 绘图小部件 GTK+ 提供了两种用于绘图的小部件: …

张小明 2025/12/27 22:33:11 网站建设

网站用户运营wordpress 数据库优化插件

Linly-Talker多场景适配:客服/导览/教学全面覆盖 在银行大厅、科技展馆或在线课堂中,一个面带微笑的虚拟讲解员正流畅地回答用户提问——她不仅声音亲切、口型精准,还能根据问题上下文做出思考状或点头回应。这不再是科幻电影的桥段&#xf…

张小明 2025/12/27 19:40:46 网站建设