如何删除 igraph python 中具有特定权重的所有边?
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
.
类型的值
然后将上述表达式的结果输入 graph_like.delete_edges()
,它需要一个边 ID 列表作为它的第一个参数。由于边 ID 是整数,它会将 False
转换为整数,使其等于零,然后 igraph 删除 ID 为零的边。
相反,您需要 select 所有边的权重为零:
graph_like.es.select(weight=0)
其中graph_like.es
表示图的边序(即所有边按顺序排列),其select()
方法根据一定的准则限制边序。这里,weight=0
是 select()
的关键字参数(注意 weight
和 0
之间只有一个等号,这里 weight
不是字符串).上述表达式的结果是所有权重为零的边的序列。然后你可以简单地调用这个边序列的delete()
方法:
graph_like.es.select(weight=0).delete()
我是 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
. 类型的值
然后将上述表达式的结果输入
graph_like.delete_edges()
,它需要一个边 ID 列表作为它的第一个参数。由于边 ID 是整数,它会将False
转换为整数,使其等于零,然后 igraph 删除 ID 为零的边。
相反,您需要 select 所有边的权重为零:
graph_like.es.select(weight=0)
其中graph_like.es
表示图的边序(即所有边按顺序排列),其select()
方法根据一定的准则限制边序。这里,weight=0
是 select()
的关键字参数(注意 weight
和 0
之间只有一个等号,这里 weight
不是字符串).上述表达式的结果是所有权重为零的边的序列。然后你可以简单地调用这个边序列的delete()
方法:
graph_like.es.select(weight=0).delete()