我使用了颜色属性,在我的图表中为两种类型的边着色。
G.add_edge(fgh,cde,color='blue')
( fgh
,cde
是用于连接不同元素的变量) (fgh
并且cde
是循环的一部分,它们的值随着每次迭代而变化)
我以 gpickle 格式保存了该图,现在我试图从保存的图中获取某种颜色的边缘。
我想做的是我得到随机边缘,但它们必须是某种颜色。谢谢你帮我
我使用了颜色属性,在我的图表中为两种类型的边着色。
G.add_edge(fgh,cde,color='blue')
( fgh
,cde
是用于连接不同元素的变量) (fgh
并且cde
是循环的一部分,它们的值随着每次迭代而变化)
我以 gpickle 格式保存了该图,现在我试图从保存的图中获取某种颜色的边缘。
我想做的是我得到随机边缘,但它们必须是某种颜色。谢谢你帮我
从泡菜加载图表后,您可以首先找到您所追求的颜色的所有边缘(请参阅文档):
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
,你会得到一个ValueError
。