1

我使用了颜色属性,在我的图表中为两种类型的边着色。

G.add_edge(fgh,cde,color='blue')

( fghcde是用于连接不同元素的变量) (fgh并且cde是循环的一部分,它们的值随着每次迭代而变化)

我以 gpickle 格式保存了该图,现在我试图从保存的图中获取某种颜色的边缘。

我想做的是我得到随机边缘,但它们必须是某种颜色。谢谢你帮我

4

1 回答 1

3

从泡菜加载图表后,您可以首先找到您所追求的颜色的所有边缘(请参阅文档):

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模块的帮助下选择随机边,例如choicesample

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.choicerandom.sample。如果调用时序列为空random.choice,你会得到一个IndexError,如果序列比你要采样的数字短random.sample,你会得到一个ValueError

于 2012-06-01T19:09:37.260 回答