1

networkx pythonでedges_iter関数を使用しています...グラフからランダムにエッジを抽出し、これらのエッジを使用して、両端のノードを取得したい... edge_iterがランダムなエッジの取得に役立つと聞きました(iランダムなエッジが必要です)が、ノードを接続する方法がわかりません。グラフをgpickle形式で保存してロードしました...次に、a = G.edges_iter()print aを使用すると、エッジの発生を示すものが表示されます...次に必要なのはノードを見つけることですこのエッジの端に取り付けられています...これで私を助けてください...たくさんの人に感謝します。

4

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