復(fù)雜網(wǎng)絡(luò)分析庫NetworkX學(xué)習(xí)筆記入門_第1頁
復(fù)雜網(wǎng)絡(luò)分析庫NetworkX學(xué)習(xí)筆記入門_第2頁
復(fù)雜網(wǎng)絡(luò)分析庫NetworkX學(xué)習(xí)筆記入門_第3頁
復(fù)雜網(wǎng)絡(luò)分析庫NetworkX學(xué)習(xí)筆記入門_第4頁
復(fù)雜網(wǎng)絡(luò)分析庫NetworkX學(xué)習(xí)筆記入門_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、復(fù)雜網(wǎng)絡(luò)分析庫NetworkX 學(xué)習(xí)筆記( 1 ):入門已有 5613 次閱讀 2010-6-21 12:52 | 個(gè)人分類 :NetworkX | 系統(tǒng)分類 : 科研筆記 |關(guān)鍵詞 : 復(fù)雜網(wǎng)絡(luò) ,NetworkXNetworkX 是一個(gè)用 Python 語言開發(fā)的圖論與復(fù)雜網(wǎng)絡(luò)建模工具,內(nèi)置了常用的圖與復(fù)雜網(wǎng)絡(luò)分析算法,可以方便的進(jìn)行復(fù)雜網(wǎng)絡(luò)數(shù)據(jù)分析、仿真建模等工作。我已經(jīng)用了它一段時(shí)間了,感覺還不錯(cuò)(除了速度有點(diǎn)慢),下面介紹我的一些使用經(jīng)驗(yàn),與大家分享。一、 NetworkX 及 Python 開發(fā)環(huán)境的安裝首先到下載,到下載。如果要用 Networkx 的制圖功能,還要去下載 mat

2、plotlib和 numpy,地址分別在和。注意都要用 Python2.6 版本的。上邊四個(gè)包中, pywin32 、matplotlib和 numpy是 exe 文件,按提示一路 next ,比較容易安裝。而 NetworkX 是個(gè) egg 文件,安裝稍微麻煩,需要用 easyinstall 安裝。具體方法:啟動 DOS控制臺(在“運(yùn)行”里輸入cmd),輸入,回車后會自動執(zhí)行安裝。注意我是把放到了 C 盤根目錄,讀者在安裝時(shí)應(yīng)該具體根據(jù)情況修改路徑。安裝完成后,啟動“開始 -程序 - ActiveState ActivePython 2.6(32-bit) -PythonWin Editor

3、”,在 shell中輸入:import networkx as nxprint nx如果能輸出:<module 'networkx' fromx_init_.pyc'>說明 Networkx 已經(jīng)安裝好了,可以正常調(diào)用。關(guān)于 Python 語言,如果沒有接觸過可以找一本 Python 的語法書來看看(推薦 Python 精要參考 ( 第二版 ) ,網(wǎng)上有電子版)。這個(gè)語言很簡單易學(xué),只要有點(diǎn)編程基礎(chǔ),幾天就可以學(xué)會它,然后就可以自如的運(yùn)用它調(diào)用 NetworkX 了。二、建立圖或網(wǎng)絡(luò)1、無向圖在 PythonWin 的 Shell 里輸入:import ne

4、tworkx asnx# 導(dǎo)入 NetworkX 包,為了少打幾個(gè)字母,將其重命名為nxG =nx.Graph()# 建立一個(gè)空的無向圖GG.add_node(1)# 添加一個(gè)節(jié)點(diǎn) 1G.add_edge(2,3)# 添加一條邊 2-3 (隱含著添加了兩個(gè)節(jié)點(diǎn) 2、3)G.add_edge(3,2)# 對于無向圖,邊 3-2 與邊 2-3 被認(rèn)為是一條邊printG.nodes()# 輸出全部的節(jié)點(diǎn):1, 2, 3printG.edges()# 輸出全部的邊: (2, 3)printG.number_of_edges()# 輸出邊的數(shù)量: 1這樣就可以建立一個(gè)簡單的無向圖了。如果你的數(shù)據(jù)是存在

5、文件里的,可以循環(huán)從文件中讀取節(jié)點(diǎn)和邊添加到 G中。2、有向圖有向圖的建立方式和無向圖基本類似,只是在上述代碼的第二行, 將 G =nx.Graph()改為 G = nx.DiGraph()。需要注意的是,此時(shí)再添加邊3-2 與邊 2-3 ,則被認(rèn)為是兩條不同的邊(可以試著運(yùn)行上述代碼,自己查看結(jié)果)。同時(shí),有向圖和無向圖是可以相互轉(zhuǎn)化的,分別用到Graph.to_undirected()和 Graph.to_directed()兩個(gè)方法。3、加權(quán)圖(網(wǎng)絡(luò))有向圖和無向圖都可以給邊賦予權(quán)重,用到的方法是add_weighted_edges_from ,它接受 1 個(gè)或多個(gè)三元組 u,v,w作為

6、參數(shù),其中 u 是起點(diǎn), v 是終點(diǎn), w是權(quán)重。例如:G.add_weighted_edges_from(0,1,3.0),(1,2,7.5)添加 0-1 和 1-2 兩條邊,權(quán)重分別是3.0 和 7.5 。如果想讀取權(quán)重, 可以使用 get_edge_data 方法,它接受兩個(gè)參數(shù) u 和v,即邊的起訖點(diǎn)。例如:printG.get_edge_data(1,2)# 輸出'weight':7.5,這是一個(gè)字典結(jié)構(gòu),可以查看python語法了解它的用法。三、調(diào)用圖算法NetworkX 提供了常用的圖論經(jīng)典算法,例如DFS、BFS、最短路、最小生成樹、最大流等等,非常豐富,如果不做復(fù)雜網(wǎng)絡(luò),只作圖論方面的工作,也可以應(yīng)用NetworkX 作為基本的開發(fā)包。具體的算法調(diào)用方法我就不一一介紹了,可以瀏覽NX的在線手冊,對每個(gè)算法都提供了詳細(xì)的幫助文檔和示例。下面只給出一個(gè)最短路算法的例子:path=nx.all_pairs_shortest_path(G)# 調(diào)用多源最短路徑算法,計(jì)算圖G所有節(jié)點(diǎn)間的最短路徑printpath02# 輸出節(jié)點(diǎn) 0、2 之間的最短路徑序列: 0,1,2四、小結(jié)作為 NetworkX 學(xué)習(xí)筆記的第一部分, 今天先簡單介紹下Networ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論