[英]how to delete all edges with specific weight in igraph python?
我是Python的新手,所以很抱歉,如果这很简单,我想删除weight
zero
所有edges
,但是使用此代码,我一次只能删除一个边,如何将其删除删除所有边缘?
ig.summary(graph_like)
IGRAPH D-W- 5390 40276 --
graph_like.delete_edges("weight"==0);
ig.summary(graph_like)
IGRAPH D-W- 5390 40275 --
先感谢您
graph_like.delete_edges("weight"==0)
不起作用,因为它的评估如下:
Python评估"weight" == 0
,它是字符串"weight"
与数字零的比较。 比较结果为False
,它是bool
类型的bool
。
然后将上述表达式的结果馈入graph_like.delete_edges()
,该graph_like.delete_edges()
期望将边缘ID列表作为其第一个参数。 由于边缘ID是整数,因此它将False
转换为整数,使其等于零,然后igraph删除ID为零的边缘。
取而代之的是,您需要选择权重为零的所有边缘:
graph_like.es.select(weight=0)
其中graph_like.es
表示图的边缘序列(即所有边缘按顺序排列),其select()
方法基于某些条件限制边缘序列。 在这里, weight=0
是select()
的关键字参数(请注意, weight
和0
之间只有一个等号,而weight
在这里不是字符串)。 以上表达式的结果是权重为零的所有边的序列。 然后,您可以简单地调用此边缘序列的delete()
方法:
graph_like.es.select(weight=0).delete()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.