networkx pythonでedges_iter関数を使用しています...グラフからランダムにエッジを抽出し、これらのエッジを使用して、両端のノードを取得したい... edge_iterがランダムなエッジの取得に役立つと聞きました(iランダムなエッジが必要です)が、ノードを接続する方法がわかりません。グラフをgpickle形式で保存してロードしました...次に、a = G.edges_iter()print aを使用すると、エッジの発生を示すものが表示されます...次に必要なのはノードを見つけることですこのエッジの端に取り付けられています...これで私を助けてください...たくさんの人に感謝します。
1 に答える
3
edges_iter
ジェネレータオブジェクトを返すので、取得したエッジを反復処理する必要があると思います。
とにかく、各エッジは2つのノードのタプルと見なすことができるため、エッジには関連付けられているノードに関する情報がすでに含まれています。この例を考えてみましょう。
import networkx as nx
g = Graph()
g.add_edges_from([(1, 2), (2, 3), (4,5), (1, 5), (2, 4)])
# Nodes are automatically added
for edge in g.edges_iter():
print edge
print 'Node 1:', edge[0]
print 'Node 2:', edge[1]
edge[0]
1つのノードedge[1]
になり、2番目になります。
ただし、このアプローチでランダムなエッジを取得する方法がわかりません。これを行う別の解決策は、それを使用random.choice
してエッジを選択することです。
from random import choice
... # Initialize graph
random_edge = choice(g.edges())
代わりに、いくつかのランダムなエッジを選択する場合は、次を使用できますrandom.sample
。
from random import sample
... # Initialize graph
# Get 2 random edges
random_edges = sample(g.edges(), 2)
于 2012-05-29T11:56:52.703 に答える