在networkx中聚合节点

时间:2015-09-21 21:37:00

标签: python aggregate networkx

如何有效地聚合节点并获得加权链接或MultiGraph?通过聚合,我的意思是通过重新标记过程中的映射字典减少节点数量:

import networkx as nx

G = nx.path_graph(5)
mapping_dict = {0: 'A', 1: 'B', 2: 'C', 3: 'A', 4: 'B', 5: 'C'}
H = nx.relabel_nodes(G, mapping_dict)
for edge in H.edges(data=True):
     print edge
#('A', 'C', {})
#('A', 'B', {})
#('C', 'B', {})

但我希望HAC(以及AB以及B之间设置权重2的链接和C)或两个平行边。有办法吗?

1 个答案:

答案 0 :(得分:0)

你可以创建一个新的多重图(或图)。

import networkx as nx
G = nx.path_graph(5)
mapping_dict = {0: 'A', 1: 'B', 2: 'C', 3: 'A', 4: 'B', 5: 'C'}
H = nx.MultiGraph()
for (u,v) in G.edges():
    H.add_edge(mapping_dict[u],mapping_dict[v])
for edge in H.edges():
     print edge
#('A', 'C')
#('A', 'B')
#('A', 'B')
#('C', 'B')