2012-06-01 71 views
1

我使用了顏色屬性,在我的圖中着色了兩種類型的邊緣。在圖形中查找某種顏色的邊緣,python

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

fghcde是用來連接不同的元件是變量)(fghcde是一個環的一部分,並且它們的值與每一個迭代中改變)

我保存的圖表在gpickle格式,現在我試圖從保存的圖形中獲取某種顏色的邊緣。

我想要做的是,我得到隨機邊緣,但他們必須是某種顏色。謝謝你幫我出

回答

3

從泡菜加載你的圖形之後,您可以先找到你後的顏色的所有邊緣(見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模塊的幫助,例如,隨機邊緣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) 

但是,一定要檢查您的通話berandom.choice之前random.sample。如果在致電random.choice時序列爲空,您將得到一個IndexError,並且如果序列比您要在random.sample中進行採樣的序號短,您將得到一個ValueError