【问题标题】:finding edges in networkx that meet a certain criteria在networkx中找到满足特定条件的边
【发布时间】:2015-01-30 13:45:37
【问题描述】:

我有一个带有节点属性的networkx digraph,我想找到特定节点属性不同的所有边。有没有办法自动执行此操作,还是我必须使用 edge_iter(data=True) 进行迭代并自己找到它们?

【问题讨论】:

  • “特定节点属性不同”是什么意思?你能提供一个具体的例子吗?我最初的直觉是遍历那些具有不同值的节点。
  • 啊 - 你是指一个节点的属性与另一个节点不同的边吗?
  • 假设如果节点 1 的属性 != 节点 2 的属性,则您要返回一条边,那么我认为您不能比将迭代器用于边并仅产生具有属性的边做得更好不相等。我建议的唯一选择是只有少数属性值。因此,您可以将其设为多方图,并以某种方式丢弃特定组件中的边。但从根本上说,我认为答案是“自己找”。
  • “你的意思是那些边的一个节点的属性与另一个节点的属性不同吗?”是的。谢谢。

标签: python graph networkx


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-01-22
    • 2013-03-05
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多