设L是一个定向图,我必须删除L的相互边。记住,如果它们是a>> b和b--这两个边是相互的 - >一个
例如L.is_mutual()
返回布尔列表,每个布尔值对应一个边。对于给定边缘a返回True - > b如果原始图形中存在另一条边b - > a。
如何使用L.is_mutual()
删除相互边缘?
可能的解决方案(慢):
L.delete_edges([l[i] for i in range(len(l)) if mut[i]==True])
答案 0 :(得分:1)
l
是否包含图表的边缘列表?在这种情况下,您的解决方案很慢,因为要删除每个边缘,igraph必须从端点查找其标识符(因为您将端点赋予delete_edges
而不是边缘索引)。由于delete_edges
也可以使用边缘索引,因此可以更快地说:
L.delete_edges(index for index, mut in enumerate(L.is_mutual()) if mut)
另一种(有点慢但更简洁)的变体:
L.es.select(_is_mutual=True).delete()