当前位置: 首页 > news >正文

第三十章:Python-NetworkX库:创建、操作与研究复杂网络

一、NetworkX库简介

NetworkX是一个强大的Python库,用于创建、操作和研究复杂网络(图)的结构、动态和功能。它支持多种类型的图,包括无向图、有向图、加权图和多重图,并提供了丰富的图论算法和可视化工具。资源绑定附上完整资料供读者参考学习!

二、常见操作示例

1. 创建图

Python示例代码

import networkx as nx

# 创建一个空的无向图
G = nx.Graph()

# 添加节点
G.add_node(1)
G.add_nodes_from([2, 3])

# 添加边
G.add_edge(1, 2)
G.add_edges_from([(2, 3), (3, 1)])

# 查看节点和边
print("节点:", G.nodes())
print("边:", G.edges())

效果展示

2. 创建有向图

Python示例代码

import networkx as nx
# 创建一个有向图
DG = nx.DiGraph()

# 添加节点和边
DG.add_edges_from([(1, 2), (2, 3), (3, 1)])

# 打印有向图的节点和边
print("节点:", DG.nodes())
print("有向边:", DG.edges())

效果展示

3. 创建加权图

Python示例代码

import networkx as nx
# 创建一个加权无向图
WG = nx.Graph()

# 添加带权重的边
WG.add_edge(1, 2, weight=4.2)
WG.add_edge(2, 3, weight=3.1)

# 获取边的权重
print(WG[1][2]['weight'])

效果展示

4. 图的可视化

Python示例代码

import matplotlib.pyplot as plt
import networkx as nx

# 创建一个空的无向图
G = nx.Graph()

# 添加节点
G.add_node(1)
G.add_nodes_from([2, 3])

# 添加边
G.add_edge(1, 2)
G.add_edges_from([(2, 3), (3, 1)])
# 绘制图
nx.draw(G, with_labels=True, node_color='red', node_size=1500, edge_color='blue')
plt.show()

效果展示

三、高级操作示例

1. 计算最短路径

Python示例代码

import matplotlib.pyplot as plt
import networkx as nx

# 创建一个空的无向图
G = nx.Graph()

# 添加节点
G.add_node(1)
G.add_nodes_from([2, 3,4,5])

# 添加边
G.add_edge(1, 2)
G.add_edges_from([(2, 3), (3, 1),(3,4),(5,4)])
# 绘制图
nx.draw(G, with_labels=True, node_color='red', node_size=1500, edge_color='blue')
plt.show()
# 计算最短路径
path = nx.shortest_path(G, source=1, target=3)
print("最短路径:", path)

效果展示

2. 计算节点中心性

Python示例代码

import matplotlib.pyplot as plt
import networkx as nx

# 创建一个空的无向图
G = nx.Graph()

# 添加节点
G.add_node(1)
G.add_nodes_from([2, 3,4,5])


# 添加边
G.add_edge(1, 2)
G.add_edges_from([(2, 3), (3, 1),(3,4),(2,4),(5,3)])
# 绘制图
nx.draw(G, with_labels=True, node_color='red', node_size=1500, edge_color='yellow')
plt.show()
# 计算节点的度中心性
degree_centrality = nx.degree_centrality(G)
print("度中心性:", degree_centrality)

# 计算节点的介数中心性
betweenness_centrality = nx.betweenness_centrality(G)
print("介数中心性:", betweenness_centrality)

效果展示

3. 社区检测

Python示例代码

from networkx.algorithms.community import greedy_modularity_communities

import matplotlib.pyplot as plt
import networkx as nx

# 创建一个空的无向图
G = nx.Graph()

# 添加节点
G.add_node(1)
G.add_nodes_from([2,3,4,5])


# 添加边
G.add_edge(1, 4)
G.add_edges_from([(4,3), (3, 2),(2,5),(5,1),(4,5)])
# 绘制图
nx.draw(G, with_labels=True, node_color='blue', node_size=1500, edge_color='green')
plt.show()
# 检测社区
communities = greedy_modularity_communities(G)
print("社区划分:", communities)

效果展示

四、函数参数总结

函数名参数说明
add_node添加一个节点,参数为节点ID和属性(可选)
add_nodes_from批量添加节点,参数为节点列表
add_edge添加一条边,参数为两个节点ID和边属性(可选)
add_edges_from批量添加边,参数为边列表
degree获取节点的度数
shortest_path计算两个节点之间的最短路径
degree_centrality计算节点的度中心性
betweenness_centrality计算节点的介数中心性
greedy_modularity_communities检测社区结构

五、总结

   NetworkX是一个功能强大的图处理库,能够轻松创建、操作和分析图结构。无论是简单的图创建还是复杂的图分析,NetworkX都能为开发者提供高效的工具。通过NetworkX,你可以从社交网络、通信网络、物流网络等多种领域中,快速构建和处理图结构,分析图中的各种关系与特性。资源绑定附上完整资料供读者参考学习!

http://www.dtcms.com/a/113089.html

相关文章:

  • 复古千禧Y2风格霓虹发光酸性镀铬金属短片音乐视频文字标题动画AE/PR模板
  • 15.1linux设备树下的platform驱动编写(知识)_csdn
  • 简单程序语言理论与编译技术·22 实现一个从AST到RISCV的编译器
  • HarmonyOS应用开发者高级-编程题-001
  • keil软件仿真
  • java高并发------线程的六种状态
  • 蓝桥云客--破译密码
  • CUDA学习--体验GPU性能
  • 【Linux学习笔记】初识进程概念和进程PCB
  • FreeRTOS的空闲任务
  • 【2022】【论文笔记】太赫兹量子阱——
  • opencv的加、减、溶合、位运算
  • Kafka 中,为什么同一个分区只能由消费者组中的一个消费者消费?
  • 文章记单词 | 第24篇(六级)
  • 【MATLAB TCP/IP客户端与NetAssist上位机双向通信实战指南】
  • Redis的公共操作命令
  • 探秘AI(003)之“通义AI”全栈AI能力引领智能化变革
  • 2025-04-05 吴恩达机器学习5——逻辑回归(2):过拟合与正则化
  • 安装gpu版本的dgl
  • Python解决“组成字符串ku的最大次数”问题
  • Airflow+Spark/Flink vs. Kettle
  • (一)前端程序员转安卓开发分析和规划建议
  • Dify票据识别遇到的分支判断不准确问题
  • 破解GenAI时代工业物联网落地难题:研华IoTSuite如何用“全栈技术“重构智造未来?
  • Roo Code使用MCP服务(大模型上下文协议)
  • 深度学习处理文本(13)
  • SSL证书过期会有什么影响
  • 奈氏准则和 香农定理
  • netty中的ServerBootstrap详解
  • thinkphp8.0上传图片到阿里云对象存储(oss)