我使用了颜色属性,在我的图表中着色了两种类型的边。
G.add_edge(fgh,cde,color='blue')
(fgh
,cde
是用于连接不同元素的变量)(fgh
和cde
是循环的一部分,它们的值随每次迭代而变化)
我以gpickle格式保存了该图表,现在我试图从保存的图形中获取某种颜色的边缘。
我想要做的是我得到随机边缘,但它们必须是某种颜色。谢谢你帮助我
答案 0 :(得分:3)
从pickle加载图表后,您可以先找到所有颜色的所有边缘(参见documentation):
be = []
for e in G.edges_iter():
if G.edge[e[0]][e[1]]['color'] == 'blue': # or G[e[0]][e[1]]['color']
be.append(e)
或列表理解:
be = [(n1, n2) for n1, n2 in G.edges_iter() if G.edge[n1][n2]['color'] == 'blue']
然后在random
模块的帮助下选择随机边缘,例如choice
或sample
:
import random
# Select one random edge...
random_blue_edge = random.choice(be)
# ... or several random edges, 3 in this case
random_blue_edges = random.sample(be, 3)
但是,请务必在致电be
或random.choice
之前检查random.sample
。如果在调用random.choice
时序列为空,您将获得IndexError
,如果序列短于您要在random.sample
中抽样的数字,则会得到{{1} }}