【问题标题】:How do I get nodes from the specific edge in the networkx?如何从 networkx 中的特定边缘获取节点?
【发布时间】:2010-05-01 14:20:41
【问题描述】:

我想比较图中不同边的节点。如何从边缘(n1,n2)获取节点(n1 和 n2)?

【问题讨论】:

    标签: python graph networkx


    【解决方案1】:

    NetworkX 中的一条边是由它的节点定义的,所以我不确定你在这里问的是什么。图中的特定边只是一个节点元组,具有可选的权重。

    import networkx as nx
    g = nx.Graph()
    g.add_edge(1,2)
    g.add_edge(2,3)
    g.edges()
    

    给予

    [(1, 2), (2, 3)]
    

    如您所见,边列表明确提供了每条边的节点。

    更新:这是你想要的吗?

    #!/usr/bin/python
    
    import networkx as nx
    import random
    
    g = nx.Graph()
    g.add_edges_from([(1,2),(2,3),(1,4),(2,5)])
    
    random_edge = random.choice(g.edges())
    
    print 'Randomly selected edge is:', random_edge
    print 'Nodes are', random_edge[0], 'and', random_edge[1]
    

    【讨论】:

    • 假设我有一个边缘列表,其中一个可能是边缘(2,3),它是节点 2 和 3 之间的边缘。我想要程序,从我的数据中随机给我一个边缘,并给我它的节点,就像这里给我 2 和 3。
    • 好的,谢谢。实际上这是我程序的第一部分,稍后我需要使用这些节点。所以我在想可能有一个get_nodes函数,函数get_edge的反面......但它仍然足够好!
    • 这真的没有意义。网络边缘“节点”是一个对象实例或“视图”(根据我从文档中收集到的内容),具有一系列属性和其他 OO 用具。另一方面,“节点标签”是节点的“名称”,而不是 networkx 对象实例。如何从边缘获取与 networkx 边缘数据中包含的节点标签相关联的 networkx 对象实例或view
    【解决方案2】:

    认为预期问题的答案是:

    graph = networkx.read_graphml('some_fully_loaded_graph.graphml')
    edge0 = list(graph.edges(data=True))[0]
    
    subgraph = graph.edge_subgraph([edge0[:2]])
    nodes0 = list(subgraph.nodes(data=True))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 2021-09-27
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多