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
(重新)命名。在这种情况下,重命名节点标签将不起作用,因此字典键和值匹配。
我有一个简单的图表,如下图所示:
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
(重新)命名。在这种情况下,重命名节点标签将不起作用,因此字典键和值匹配。