2

我有一个带权重的有向多重图。边缘添加看起来像

 g.add_edge(source_a,source_b, weight= some_Weight)

构建图表时,我希望仅在基于权重的节点之间的顶部节点之间有边。所以如果我的图表是这样的

 1,2,0.5
 1,2,0.6
 1,2,0.4
 1,3,0.5
 ...

我只想看到每个节点之间的前 2 条边。我所说的顶部是指权重最高的边缘。所以输出将类似于

1,2,0.6
1,2,0.5
1,3,0.5

我正在删除其余的边缘。如何使用 python/networkx 执行此操作?

4

1 回答 1

4

您可以简单地遍历具有特定属性的边缘:

import networkx as nx

G = nx.MultiGraph()
G.add_edge(1,2,weight=.5)
G.add_edge(1,2,weight=.6)
G.add_edge(1,2,weight=.4)
G.add_edge(1,3,weight=.5)

cutoff = .45

top = [edge for edge in G.edges_iter(data=True) 
       if edge[2]['weight'] > cutoff]

print top

这给出了:

[(1, 2, {'weight': 0.5}), (1, 2, {'weight': 0.6}), (1, 3, {'weight': 0.5})]

从这里可以很容易地创建一个只有这些边的新图。

G2 = nx.MultiGraph(top)
于 2013-04-19T19:37:36.577 回答