Python 中的 NetworkX 包
- 在 Python 中安装 NetworkX 包
- 在 Python 中使用 NetworkX 包将节点添加到图形中
- 在 Python 中使用 NetworkX 包向图形添加边
- 在 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 已被删除。因此,该方法忽略了这一点。
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