代码之家  ›  专栏  ›  技术社区  ›  ssast

使用igraph Python查找顶点之间所有边的id

  •  0
  • ssast  · 技术社区  · 7 年前

    使用Python igraph库,我有一个表示道路网络的有向图,每个顶点(坐标)之间的距离作为权重。一个顶点对之间很可能有两条或多条边,权重不同。我需要通过查询顶点ID从图中检索这些权重,例如示例图:

    import igraph as ig
    
    g = ig.Graph(directed=True)
    
    g.add_vertices(4)
    
    edges = [(0, 1), (1, 2), (1, 2), (2, 3)]
    g.add_edges(edges)
    
    g.es[:]["dist"] = [1, 2, 3, 4]
    

    我知道我可以得到边的id,然后得到如下属性,但这似乎只能找到最后添加的属性,例如:

    g.get_eid((0, 1)) # returns 0
    g.get_eid((1, 2)) # returns 2
    

    因此,在1和2之间有两条边,但是getèeid只返回一条边-我需要知道这两条边,然后查询边属性并返回权重,从图中选择正确的最小距离,就像距离加权最短路径查询所使用的那样。有没有办法用igraph来做这个?

    1 回复  |  直到 7 年前
        1
  •  0
  •   G5W    7 年前

    我认为你在蟒蛇方面运气不好。的文档 get_eid

    的文档 get_eids

    在一对顶点之间,只返回其中一条边的ID。

    奇怪的是,igraph的R版本 get.edge.ids multi 这样就可以得到多个这样的边。

    在绝望中,我尝试添加 multi=True 但它给了我:

    “multi”是此函数的无效关键字参数