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

how to delete all edges with specific weight in igraph python?

我是 Python 的新手,很抱歉这么简单,我正在尝试删除其 weightzero 的所有 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. 类型的值
  3. 然后将上述表达式的结果输入 graph_like.delete_edges(),它需要一个边 ID 列表作为它的第一个参数。由于边 ID 是整数,它会将 False 转换为整数,使其等于零,然后 igraph 删除 ID 为零的边。

相反,您需要 select 所有边的权重为零:

graph_like.es.select(weight=0)

其中graph_like.es表示图的边序(即所有边按顺序排列),其select()方法根据一定的准则限制边序。这里,weight=0select() 的关键字参数(注意 weight0 之间只有一个等号,这里 weight 不是字符串).上述表达式的结果是所有权重为零的边的序列。然后你可以简单地调用这个边序列的delete()方法:

graph_like.es.select(weight=0).delete()