python-networkx學習(1)

來源:互聯網
上載者:User

標籤:length   from   載入   def   選擇性參數   雜湊表   預設   工作量   default   

介紹:

networkx是python的一個庫,它為圖的資料結構提供演算法、產生器以及畫圖工具。近日在使用ryu進行最短路徑擷取,可以通過該庫來簡化工作量。該庫採用函數方式進行調用相應的api,其參數類型通常為圖對象。

函數API的調用,按照以下步驟來建立構建圖:

1.networkx的載入

在python中調用networkx通常只需要將該庫匯入即可

import networkx as nx

 

2.圖對象的建立

networkx提供了四種基本圖對象:Graph,DiGraph,MultiGraph,MultiDiGraph。

使用如下調用方式,可以建立以上四種圖對象的空圖。

G=nx.Graph()G=nx.DiGraph()G=nx.MultiGraph()G=nx.MultiDiGraph()

在 networkx中,圖的各個節點允許以雜湊表對象來表示,而對於圖中邊的各個參量,則可以通過與邊相關聯的方式來標識,一般而言,對於權重,用weight作為keyword,而對於其他的參數,使用者可以採用任何除weight以外的keyword來命名。

3.在2中,建立的只是一副空圖,為了得到一個有節點、有邊的圖,一般採用下面這個函數:

G.add_edge(1,2) #default edge data=1 G.add_edge(1,2) #specify edge data=0.9

add_edge()函數,該函數在調用時需要傳入兩個參數u和v,以及多個選擇性參數

u和v即圖中的兩個節點,如果圖中不存在節點,在調用時會自動將這兩個節點添加入內,同時構建兩個節點之間的串連關係,選擇性參數通常指這條邊的權重等關係參量。需要注意的是,如果圖中已經存在了這條邊,重新進行添加時會對這條邊進行跟新操作(也就是覆蓋了原有的資訊)。

對於該函數,除了上述的構建方式以外,還有以下幾種方式來建立邊:

G.add_edge(*e)             # single edge as tuple of two nodesG.add_edge(1, 3, weight=7, capacity=15, length=342.7)  #using many arguements to create edgeG.add_edges_from( [(1, 2)] ) # add edges from iterable container

  有時候,當採用預設建立邊以後,我們可能還會往邊裡面添加邊的相關參數,這時候,可以採用下面的方式來更新邊的資訊:

#For non-string attribute keys, use subscript notation.G.add_edge(1, 2)G[1][2].update({0: 5})     #更新邊的資訊G.edges[1, 2].update({0: 5})  #更新邊的資訊#上述兩種更新方式,擇一選取即可

  細心的朋友可能注意到我在寫建立圖的內容的時候,提到了add_edges_from()函數,該函數也是用來建立邊的,該方式與add_edges()略有不同,比之add_edges()採用一個一個節點的方式進行建立,它來的更為便利。這個函數在調用時,需要一個節點元組作為參數以及多個選擇性參數作為邊的資訊。你可以這麼傳遞:

預設建立節點之間的邊:

G.add_edges_from([(u,v)])

 也可以這麼寫,在建立的同時添加資訊:

G.add_edges_from([(3, 4), (1, 4)], label=‘WN2898‘) 

  通過上述方式,就構建了一個3-4-1的圖的串連,並給每條邊打上了標籤。

由此你就可以建立出自己的圖模型了。

 

 

          

python-networkx學習(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.