在图表networkx中获得前n个边缘

时间:2013-04-19 18:35:09

标签: python networkx

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

 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做到这一点?

1 个答案:

答案 0 :(得分: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)