[英]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.