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 に答える