networkx.relabel.convert_node_labels_to_integers 说明

networkx.relabel.convert_node_labels_to_integers explanation

我有一个简单的图表,如下图所示:

    edge_list = [[1,1],[1,2],[1,3],[2,3]]

我想使用 relabel.convert_node_labels_to_integers() 方法来 像文档中所说的那样用连续的整数标记节点。 我对使用该方法的期望是以下字典:

    {0: 0, 1: 1, 2: 2, 3:3}

但我得到以下信息:

    {0: 0, 1: 1, 2: 2}

有人可以向我解释为什么吗?谢谢

边列表定义了三个节点,1,2,3(其中有四个边)。

import networkx as nx

G = nx.Graph()

edge_list = [[1, 1], [1, 2], [1, 3], [2, 3]]

G.add_edges_from(edge_list)

print(G.nodes())  # [1, 2, 3]

GG = nx.relabel.convert_node_labels_to_integers(G)

print(GG.nodes())  # [0, 1, 2]

mapping = {k: GG.nodes[k]["old_id"] for k in GG.nodes()}
print(mapping) # {0: 1, 1: 2, 2: 3}

在您的输出中,节点似乎在某些时候使用 0,1,2(重新)命名。在这种情况下,重命名节点标签将不起作用,因此字典键和值匹配。