Python 中的 NetworkX 包

Fariba Laiq 2023年10月10日
  1. 在 Python 中安装 NetworkX 包
  2. 在 Python 中使用 NetworkX 包将节点添加到图形中
  3. 在 Python 中使用 NetworkX 包向图形添加边
  4. 在 Python 中使用 NetworkX 包从图中删除节点
  5. 在 Python 中使用 NetworkX 包从图中删除边
Python 中的 NetworkX 包

本教程将介绍使用 Python NetworkX 包来研究复杂网络。

NetworkX 包包含内置方法,我们可以通过这些方法创建、操作和分析表示为图形的复杂网络。

该库提供了许多功能,例如图形数据结构、创建和删除节点、在节点之间添加链接以及许多其他图形算法。

在 Python 中安装 NetworkX 包

要在 Python 程序中使用 NetworkX 包,我们应该首先使用以下命令安装它。

#Python 3.x
pip install networkx

在 Python 中使用 NetworkX 包将节点添加到图形中

要将节点添加到图,首先,我们必须导入 NetworkX 库并通过调用 Graph() 方法创建一个空图。在向图中添加节点时,我们可以一个一个地添加,也可以一起添加。

我们将使用 add_node() 方法一一添加节点。要添加节点列表,我们将使用带有可迭代对象的 add_nodes_from() 方法。

节点可以是不可变对象,例如 int、float、String、boolean、tuple 等。如果我们在图中添加重复节点,它们将被忽略。

我们可以使用下面的代码将节点打印到图表中。

# Python 3.x
import networkx as n

graph = n.Graph()
graph.add_node(1)
graph.add_node(2)
graph.add_node(3)
graph.add_node(4)
graph.add_nodes_from([5, 6, 7])
print("Nodes:", graph.nodes())

输出:

#Python 3.x
Nodes: [1, 2, 3, 4, 5, 6, 7]

在 Python 中使用 NetworkX 包向图形添加边

通过连接两个或更多节点,我们可以向图中添加一条边。我们可以一次添加一条边或多条边。

我们将使用 add_edge() 方法添加一条边。为了一次添加多条边,我们将使用 add_edges_from() 方法。

下面的代码是上面代码的延续。

# Python 3.x
graph.add_edge(1, 2)
graph.add_edge(3, 4)
graph.add_edges_from([(5, 6), (6, 7)])
print("Nodes:", graph.nodes())
print("Edges:", graph.edges())

输出:

#Python 3.x
Nodes: [1, 2, 3, 4, 5, 6, 7]
Edges: [(1, 2), (3, 4), (5, 6), (6, 7)]

在上面的代码中,我们使用 add_ edge() 在节点 1 和 2 以及节点 3 和 4 之间添加了一条边。我们同时使用 add_edges_from() 在节点 5 和 6 以及节点 6 和 7 之间添加边。

最后,我们打印了图的节点和边。

在 Python 中使用 NetworkX 包从图中删除节点

我们还可以在 Python 中删除图中的节点。如果我们删除一个节点,它的关联边也将被删除。

要从图中删除单个节点,我们将使用 remove_node()。要同时删除多个节点,我们将使用 remove_nodes_from()

我们将一些可迭代的容器传递给这些方法,这些方法由要删除的节点列表组成。当我们使用这些方法,并且相应的节点不存在时,会返回 NetworkX 错误。

# Python 3.x
graph.remove_node(1)
graph.remove_node(3)
graph.remove_nodes_from([2, 4])
print("Nodes:", graph.nodes())
print("Edges:", graph.edges())

输出:

#Python 3.x
Nodes: [5, 6, 7]
Edges: [(5, 6), (6, 7)]

在上面的代码中,我们使用 remove_node() 删除了节点 1 和 3。我们同时使用 remove_nodes_from() 删除了节点 2 和 4。

因此,与它们关联的边也被删除。

在 Python 中使用 NetworkX 包从图中删除边

要删除图的边,我们将使用 remove_edge()remove_edges_from() 方法。

如果我们想删除一条边,我们必须使用 remove_edge(),如果我们要同时删除多条边,我们必须使用 remove_edges_from()

# Python 3.x
graph.remove_edge(5, 6)
graph.remove_edges_from([(6, 7), (4, 5)])
print("Nodes:", graph.nodes())
print("Edges:", graph.edges())

输出:

#Python 3.x
Nodes: [5, 6, 7]
Edges: []

节点 5 和 6 之间的边首先使用 remove_edge() 方法删除。

我们还想使用 remove_edges_from() 方法删除节点 6 和 7 以及节点 4 和 5 之间的边;但是,节点 5 和 6 已被删除。因此,该方法忽略了这一点。

作者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn