我有一个带有权重的有向多图。边缘添加看起来像
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做到这一点?
答案 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)