2013-02-25 43 views
0

我已經使用read_graphml加載圖形,並且看起來好像它返回了Multiedges圖形對象,我無法運行PageRank方法(返回圖形必須非多重化的異常)。 有沒有辦法將我的圖轉換爲非多重類型(我不認爲我在圖中加載了多邊...)。如何將多點圖轉換爲Networkx中的無定向圖?

由於

回答

2

如果read_graphml()函數返回一個多重圖()對象,它可能發現並行(多)在輸入文件中的邊緣。但是你可以簡單地通過傳遞一個新的Graph()來將它轉換爲沒有平行邊的圖。例如

In [1]: import networkx as nx 

In [2]: G = nx.MultiGraph([(1,2),(1,2)]) 

In [3]: G.edges() 
Out[3]: [(1, 2), (1, 2)] 

In [4]: H = nx.Graph(G) 

In [5]: H.edges() 
Out[5]: [(1, 2)] 
+0

此方法對我無效。輸入'g'後,我得到了'DiGraph'實例。我試過'nx.MultiGraph(g)',結果圖有一半的邊緣。我想要的是相同數量的邊緣,但對於那些不受約束的邊緣。有沒有辦法實現這一點? – 2013-10-24 13:06:36

+0

如果你得到一個g的DiGraph()實例,那麼你可以直接調用pagerank(g)的權利?如果您獲得MultiDiGraph()for g,那麼可以調用DiGraph(g)返回沒有平行邊的圖。 – Aric 2013-10-24 13:54:37

+0

我想要的是每對節點之間有2條無向邊的圖。這對於任何一種networkx圖形類型都是可能的嗎? – 2013-10-24 14:15:47