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