将节点放在边缘g.edge_iter的末尾

时间:2012-05-29 07:33:20

标签: python nodes networkx

我正在使用networkx python中的edges_iter函数...我希望从图形中随机提取边缘然后使用这些边缘,得到每一端的节点...我听说edge_iter可以帮助我获取随机边缘(我需要随机边缘),但我无法弄清楚如何连接节点。我已经以gpickle格式保存图表并加载它...然后我使用 一个= G.edges_iter() 打印一个 我明白了 表明边缘的出现......我接下来想要的是找出在这条边的末端附着的节点......帮助我解决这个问题......非常感谢你们。

1 个答案:

答案 0 :(得分:2)

edges_iter返回一个生成器对象,所以我想你想迭代你得到的边。

无论如何,边缘已经包含与它们相关联的节点的信息,因为每个边缘可以被视为两个节点的元组。考虑这个例子:

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]将是一个节点,edge[1]将是第二个节点。

但是,我不知道你如何通过这种方法获得随机边缘。另一个解决方案可能是使用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)