1

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

4

1 回答 1

3

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)
于 2012-05-29T11:56:52.703 回答