2015-01-27 72 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