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