Python NetworkX2025年03月17日 | 阅读 9 分钟 在本教程中,让我们来探索 Python 的 NetworkX 库。NetworkX 在 Python 中表示网络分析。NetworkX 是一个 Python 模块,用于控制、创建和分析要素、结构和复杂网络元素。它用于创建、操作和研究复杂的图。 引言NetworkX 是一个 Python 语言编程模块,用于研究复杂组织的要素结构和功能。它用于研究以节点和边表示的大型复杂网络。使用 NetworkX,我们可以加载和存储复杂的组织。我们可以生成许多随机和经典的网络,分析网络结构,构建网络模型,设计新的网络算法以及绘制网络。NetworkX 是在 BSD-new 许可证下发布的免费软件。 所需先决条件:对 Python 编程基础和数学图论的基本了解。 NetworkX 的亮点
适用性 NetworkX 适用于处理大型真实世界图:例如,具有超过 200 亿个节点和 2000 亿条边的图。[需要澄清]。由于其对纯 Python“字典的字典”数据结构的依赖,NetworkX 是一个相对高效、完全可扩展、高度可组合的网络和社交网络分析框架。 安装如果您的系统未安装 NetworkX 包,则需要立即安装。您可以使用下面的命令进行安装 上面的命令将在您的系统中安装 NetworkX 包。现在,您可以准备使用它了。有时,上面的命令可能会显示错误消息。您被告知使用 pip3 命令而不是 pip。这取决于您的系统如何配置。 导入库您可以使用以下命令导入“networkx”模块 现在,可以使用别名“nxx”访问“networkx”模块。您可以使用任何别名;但是,“nxx”是 Python 中“networkx”模块最常用的别名。 使用 NetworkX Python 模块执行的各种操作创建完全空的图使用以下命令创建任何空图 上面的命令将创建一个空图。空图具有空的边集和空的顶点集。 要访问图 G1 的边集和顶点集,我们可以使用以下命令 G1.nodes() 和 G1.edges 都返回 Python 列表。G1.nodes() 和 G1.edges 将返回空列表,因为我们没有向图 G1 添加任何节点或边。 向图中添加节点首先,我们将通过调用 Graph() 类来创建一个空图,如下所示。 NetworkX 中的节点可以是任何可哈希的对象,即数字、文本字符串、图像、XML 对象等。它也可以是 NetworkX 图。 有两种方法用于向图中添加节点。 add_node(): 此方法用于一次添加单个节点。 add_nodes_from(): 此方法接受列表、集合等可迭代容器,并一次添加多个节点。 源代码 输出 [1, 2, 3, 'node 5'] 向图中添加边这两个方法主要用于向图中添加边。边就像两个节点之间的连接。参数中指定的未知节点会自动添加到图中。 add_edges_from(): 此方法接受边元组的可迭代容器,如列表、迭代器等。 add_edge(): 此方法一次添加一条边。 NetworkX 会静默忽略将边或节点再次添加到图的操作。 源代码 输出 [1, 2, 3, 4, 5] [(1, 2), (2, 3), (2, 4), (3, 5), (4, 5)] 从给定图中删除边和节点。与添加边和节点类似,我们可以一次删除单条边和节点,也可以一次删除多条边和节点。
源代码 输出 [1, 2, 3, 4, 5, 6, 7, 8] [(1, 2), (1, 4), (2, 3), (3, 4), (5, 6), (5, 7), (5, 8), (7, 8)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - [1, 2, 3, 4, 5, 6, 7, 8] [(2, 3), (5, 6), (5, 7), (5, 8), (7, 8)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - [1, 2, 3, 4, 6] [(2, 3)] 访问图的元素我们可以访问 NetworkX 图中的 4 个基本图属性。
源代码 输出 Node - - - - - - - - - - - - - -- - - - - - - [1, 2, 3, 5, 6] Edge - - - - - - - - - - - - - - - - - - - - - [(1, 2), (1, 3), (3, 5), (3, 6)] Adjacency List- - - - - - - - - - - - - - - - - - - - - {1: {2: {}, 3: {}}, 2: {1: {}}, 3: {1: {}, 5: {}, 6: {}}, 5: {3: {}}, 6: {3: {}}} Degree- - - - - - - - - - - - - - - - - - - - - [(1, 2), (2, 1), (3, 3), (5, 1), (6, 1)] Adjacence Python List for node 3- - - - - - - - - - - - - - {1: {}, 5: {}, 6: {}} Degree for node 3- - - - - - - 3 图、节点和边的属性每个图、节点和边都可以保存键/值属性对到一个相关的属性字典中。默认情况下,这些是空的。但是,可以使用 add_edge、add_node 或直接访问 G.graph、G.nodes 和 G.edges(对于图 G)的属性字典来添加或修改属性。 1. 图属性 您可以在创建图时使用 nxx.Graph() 分配属性。 源代码 输出 {'graph_description': 'empty graph is created here'} 或者,您可以稍后像字典对象一样添加/修改属性 源代码 输出 Output: {'description': 'This is empty graph', 'data': 5} 2. 节点属性 您可以使用 add_node()、add_nodes_from() 或 G.nodes 添加节点属性。您可以使用 G.nodes.data() 获取所有节点的属性。对于特定节点,使用下标表示法,如下所示。 源代码 输出 [(1, {'data': 'data11', 'type': 'root node'}), (2, {'node_type': 'children node', 'data': 'data22'}), (3, {'node_type': 'children node', 'data': 'data33'})] {'data': 'data11', 'type': 'root node'} 3. 边属性 - 创建带权重的边图 您可以使用 add_edge()、add_edges_from()、G.edges 或下标表示法为边添加属性。我们可以通过为边分配属性来创建带权重的图,如下所示。 源代码 输出 [(1, 2, {'weight_': 10}), (1, 3, {'weight_': 70}), (1, 4, {'weight_': 100}), (4, 5, {'weight_': 175})] 可视化 NetworkX 包的图我们可以使用 draw() 方法绘制图并在 NetworkX 包中可视化它们,如下所示。 源代码 输出 ![]() NetworkX 图可视化如果您想绘制带权重的图,请使用 draw_networkx_edge_labels(),并配合 nxx.draw() 指定图、pos 和 edge_label 参数。 源代码 输出 ![]() 图:带权重的 NetworkX 图可视化 使用 NetworkX 包创建有向图NetworkX 还允许您使用 DiGraph() 类创建有向图,该类提供额外的用于有向边的方法和属性,例如 DiGraph.out_edges、DiGraph.in_degree、DiGraph.predecessors()、DiGraph.successors() 等。 源代码 输出 Out edges of node 4 are: [(4, 5), (4, 6)] In Degree of node 2 is: 2 Successors of node 4 are: [5, 6] Predecessors of node 2 are: [1, 5] ![]() 图:NetworkX 有向图 结论在本教程中,您了解了 NetworkX 包以及如何使用它来创建、操作和可视化图。这个库在研究复杂的组织和图时非常有用。数学家、物理学家、社会学家、计算机科学家等都使用它进行研究。 感谢阅读!! |
在本教程中,我们将编写用于股票跨度问题的Python程序。这是一个在技术面试中经常出现的非常流行的编程问题。股票跨度问题是一个金融挑战,涉及分析一系列N个每日报价...
7 分钟阅读
人工神经网络 (ANN) 是数据科学中最前沿的机器学习模型。它们的性能神秘地令人惊叹,即使只有一个隐藏层,它们也能以任何所需的精度近似任何函数。既然如此,为什么还会有人选择其他模型呢?
阅读9分钟
在本教程中,我们将编写一个 Python 程序来查找两个给定字符串之间的差异。这个问题可能会在面试中出现。让我们理解问题陈述,然后我们将着手解决。问题陈述 - 给定两个字符串 s……
阅读 3 分钟
"或"运算符是Python中的逻辑运算符,用于组合两个或多个条件。此操作返回一个布尔值 - 如果至少一个条件为真,则返回True;如果所有条件都为假,则返回False。我们通常使用Python的"或"运算符...
阅读 4 分钟
Python 编程语言为所有类型的项目提供了不同类型的库。同样,Python 拥有各种数据可视化库,以便用户能够非常详细地理解数据集并正确分析它。每个可视化库都有其自身的特点。使用...
阅读 10 分钟
在这个问题中,我们将给定一个整数数组,我们需要找到给定数组所有可能的子数组中和最大的子数组。让我们看一个例子来理解这个问题。输入:数组 = [-2, -3, 4, -1, -2,...
阅读 12 分钟
在本教程中,我们将学习用于 PDF 数据提取以供进一步分析的 Python 库。我们将介绍基本的 Python 库。PDF 是一种可移植文档格式,通常用于安全地存储数据。PDF 简历以各种方式创建...
阅读 6 分钟
在本教程中,我们将学习 Python 中的 Shutil 模块。我们将讨论如何使用 Python 脚本执行高级文件操作,例如创建新的复制文件并将其存档以及将内容从一个文件复制到另一个文件。让我们...
阅读 6 分钟
一种流行且有效的排序算法 Quick Sort 使用分治法来组织列表或数组中的项。虽然 Quick Sort 通常实现为基于文本的算法,但您可以使用 Python 的 Matplotlib 以三维方式可视化该方法,以便更好地...
阅读 6 分钟
命令行参数和解析输入参数是编程和开发的重要方面。命令行参数不过是在程序名称之后在系统命令行中指定的参数。当我们在这些命令行参数中传递值时,这些值会直接传递到...
阅读20分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India