2015-01-27 69 views
-1

我有一個networkx digraph在節點上有屬性,我想查找特定節點屬性不同的所有邊緣。有沒有辦法自動做到這一點,或者我必須迭代edge_iter(data=True)並自己找到它們?在網絡x中找到滿足特定條件的邊緣

+0

你是什麼意思的「特定節點的屬性是不同的」?你能提供一個具體的例子嗎?我最初的直覺是迭代那些具有不同值的節點。 – Joel 2015-01-27 00:56:57

+0

啊 - 你是指那些爲其中一個節點的屬性與另一個節點的屬性不同的邊緣? – Joel 2015-01-27 00:58:40

+0

假設你想返回一個邊,如果節點1的屬性!=節點2的屬性,那麼我認爲你可以比邊緣迭代器做得更好,並且只產生那些屬性不相等的屬性。我建議的唯一選擇是如果只有少量的屬性值。所以你可以使它成爲一個多部分圖形,並以某種方式拋出特定組件內的邊緣。但基本上,我認爲答案是「自己找到它們」。 – Joel 2015-01-27 01:12:00

回答

1

有這個沒有內置的功能,但它是非常簡單的:

import networkx as nx 

G = nx.Graph() 
G.add_node(1,color='red') 
G.add_node(2,color='red') 
G.add_node(3,color='blue') 
G.add_node(4,color='blue') 

G.add_edges_from([(1,2),(1,3),(3,4)]) 

for (u,v) in G.edges_iter(): 
    if G.node[u]['color'] != G.node[v]['color']: 
     print u,v