Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多边python图问题_Python_Igraph - Fatal编程技术网

多边python图问题

多边python图问题,python,igraph,Python,Igraph,如果你有一个有向多边加权图,你怎么做这些事情 对于顶点I和J,列出从I到J的所有边 删除图中权重大于10的所有边 对于1,我可以列出所有输出边,然后按目标节点过滤。这似乎是潜在的低效,有没有直接获取边缘的方法?对于2,我可以列出所有边,查找每个权重,然后根据需要删除边。有一种简洁的惯用方法吗?至于#1,不幸的是,没有比您提到的更简单的解决方案了(即查询所有输出边,然后根据目标进行过滤)。igraph的C核心有一个名为igraph\u get\u eids\u multi的函数,它可以做您想要做的

如果你有一个有向多边加权图,你怎么做这些事情

  • 对于顶点I和J,列出从I到J的所有边
  • 删除图中权重大于10的所有边
  • 对于1,我可以列出所有输出边,然后按目标节点过滤。这似乎是潜在的低效,有没有直接获取边缘的方法?对于2,我可以列出所有边,查找每个权重,然后根据需要删除边。有一种简洁的惯用方法吗?

    至于#1,不幸的是,没有比您提到的更简单的解决方案了(即查询所有输出边,然后根据目标进行过滤)。igraph的C核心有一个名为
    igraph\u get\u eids\u multi
    的函数,它可以做您想要做的事情,但是该函数没有相应的Python接口

    至于#2,您可以这样做(假设
    g
    是图形对象,
    weight
    是保存权重的边属性的名称,
    gt
    表示“大于”):

    其中,
    g.es
    表示整个图形的边序列,其
    select
    方法基于某些标准对边序列进行子集(有关更多详细信息,请参阅的文档),并返回另一个
    EdgeSeq
    。过滤边序列的
    delete()
    方法随后删除边。

    至于#1,不幸的是,没有比您提到的更简单的解决方案(即查询所有传出边,然后根据目标进行过滤)。igraph的C核心有一个名为
    igraph\u get\u eids\u multi
    的函数,它可以做您想要做的事情,但是该函数没有相应的Python接口

    至于#2,您可以这样做(假设
    g
    是图形对象,
    weight
    是保存权重的边属性的名称,
    gt
    表示“大于”):


    其中,
    g.es
    表示整个图形的边序列,其
    select
    方法基于某些标准对边序列进行子集(有关更多详细信息,请参阅的文档),并返回另一个
    EdgeSeq
    。过滤后的边序列的
    delete()
    方法会删除边。

    该图是如何实现的?您可以访问哪些数据结构?最后,但并非最不重要的一点是,您尝试了什么(翻译:欢迎使用SO,我们很乐意提供帮助,但我们不是编码服务。向我们展示您尝试了什么(翻译:我们不会为您做家庭/工作))?该图是使用IGRAPHE的read ncol方法读取的。我使用的是标准的python plus igraph,因此至少可以访问这些库。注意:这是一个关于如何与开源图形库交互的问题,而不是一个关于如何实现操作的问题。(起初,我认为“I”是一个打字错误。)@user2357112谢谢。这个图形是如何实现的?您可以访问哪些数据结构?最后,但并非最不重要的一点是,您尝试了什么(翻译:欢迎使用SO,我们很乐意提供帮助,但我们不是编码服务。向我们展示您尝试了什么(翻译:我们不会为您做家庭/工作))?该图是使用IGRAPHE的read ncol方法读取的。我使用的是标准的python plus igraph,因此至少可以访问这些库。注意:这是一个关于如何与开源图形库交互的问题,而不是一个关于如何实现操作的问题。(起初,我认为“I”是一个拼写错误。)@user2357112谢谢你。我意识到我也不能让1工作。如果我列出了来自I的所有传出边,那么我不知道如何将其作为元组列表,这样我就可以通过结束顶点J进行过滤。
    [g.es中边对边[g.incident(source)]如果edge.target==target]
    应该可以做到这一点。如果您只需要边索引,也可以使用
    [edge.index for edge…
    。我意识到我也无法使用#1。如果我列出了我的所有输出边,那么我不知道如何将其作为元组列表,以便可以按端点J进行过滤。
    [edge for edge in g.es[g.incident(source)]如果edge.target==target
    应该可以做到这一点。如果您只需要边缘索引,也可以使用
    [edge.index for edge…
    g.es.select(weight_gt=10).delete()