在igraph中基于源/目标选择边

bpe*_*ter 8 python igraph

有没有一种简单的方法可以根据igraph中的源和目标选择/删除边缘?

我使用的基本上是

g.es["source"] = [e.source for e in g.es]
g.es["target"] = [e.target for e in g.es]    
g.es["tuple"]  = [e.tuple  for e in g.es]        

g.es.select(target=root)
Run Code Online (Sandbox Code Playgroud)

但我觉得应该有一种方法可以做到这一点,而无需两次存储源/目标信息.

Tam*_*más 13

只需使用_source=whatever_target=whatever作为关键字参数select,例如:

g.es.select(_source=root)
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用incident图表的方法,EdgeSeq如果更适合您的目的,它会为您提供边缘ID列表而不是过滤器:

g.incident(root, mode="out")
Run Code Online (Sandbox Code Playgroud)

  • 不; 在这种情况下,你最好使用`g.es [g.get_eid(source,target)]`,这类似于`O(log d)`,其中`d`是两个度数中较小的一个涉及的顶点. (3认同)