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

如何在igraph python中删除具有特定权重的所有边?,python,igraph,Python,Igraph,我是Python新手,很抱歉,如果这太简单了,我正在尝试删除所有边,它的权重为零,但是有了这段代码,我只能一次删除一条边,如何让它删除所有边 ig.summary(graph_like) IGRAPH D-W- 5390 40276 -- graph_like.delete_edges("weight"==0); ig.summary(graph_like) IGRAPH D-W- 5390 40275 -- 提前感谢您类似于图形。删除边(“权重”==0)不起作用,因为它的计算结果如下:

我是Python新手,很抱歉,如果这太简单了,我正在尝试删除所有
,它的
权重
,但是有了这段代码,我只能一次删除一条边,如何让它删除所有边

 ig.summary(graph_like)
IGRAPH D-W- 5390 40276 -- 
graph_like.delete_edges("weight"==0);
ig.summary(graph_like)
IGRAPH D-W- 5390 40275 -- 

提前感谢您

类似于图形。删除边(“权重”==0)
不起作用,因为它的计算结果如下:

  • Python计算
    “weight”==0
    ,这是字符串
    “weight”
    与数字零的比较。此比较的结果为
    False
    ,类型为
    bool

  • 然后将上述表达式的结果输入到
    graph\u like.delete\u 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()
    

    graph\u like.delete\u边(“weight”==0)
    不起作用,因为它的计算结果如下:

  • Python计算
    “weight”==0
    ,这是字符串
    “weight”
    与数字零的比较。此比较的结果为
    False
    ,类型为
    bool

  • 然后将上述表达式的结果输入到
    graph\u like.delete\u 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()
    

    非常感谢@Tamás的详细解释。非常感谢@Tamás的详细解释。