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