簡體   English   中英

如何在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)不起作用,因為它的評估如下:

  1. Python評估"weight" == 0 ,它是字符串"weight"與數字零的比較。 比較結果為False ,它是bool類型的bool

  2. 然后將上述表達式的結果饋入graph_like.delete_edges() ,該graph_like.delete_edges()期望將邊緣ID列表作為其第一個參數。 由於邊緣ID是整數,因此它將False轉換為整數,使其等於零,然后igraph刪除ID為零的邊緣。

取而代之的是,您需要選擇權重為零的所有邊緣:

graph_like.es.select(weight=0)

其中graph_like.es表示圖的邊緣序列(即所有邊緣按順序排列),其select()方法基於某些條件限制邊緣序列。 在這里, weight=0select()的關鍵字參數(請注意, weight0之間只有一個等號,而weight在這里不是字符串)。 以上表達式的結果是權重為零的所有邊的序列。 然后,您可以簡單地調用此邊緣序列的delete()方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM