Skip to main content
 首页 » 编程设计

python之如何删除 igraph python 中具有特定权重的所有边

2025年05月04日14powertoolsteam

我是 Python 新手,很抱歉这么简单,我正在尝试删除所有 weight 为 0 的 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) 不起作用,因为它的计算如下:

  1. Python 计算 "weight"== 0,这是字符串 "weight" 与数字零的比较。此比较的结果是 False,一个 bool 类型的值。

  2. 然后将上述表达式的结果输入 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()