复杂网络分析——networkx的使用
生活随笔
收集整理的這篇文章主要介紹了
复杂网络分析——networkx的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 基本圖操作
導(dǎo)包
import networkx as nx import matplotlib.pyplot as plt建立一個空的無向圖G
G = nx.Graph() # DiGraph() 有向圖添加一個節(jié)點(diǎn)a
G.add_node('a')加點(diǎn)集合
G.add_nodes_from(['b','c','d','e'])加邊
G.add_edge('a','b') G.add_edges_from([('b','c'),('a','d')])2. 其他方法
1.節(jié)點(diǎn)數(shù)量
print("01. 圖G的節(jié)點(diǎn)數(shù):",G.number_of_nodes())2. 輸出全部的節(jié)點(diǎn)
print("02. 圖G的全部節(jié)點(diǎn):",G.nodes())3. 輸出全部的邊
print("03. 圖G的全部邊:",G.edges())4. 輸出邊的數(shù)量
print("04. 圖G的邊數(shù):",G.number_of_edges())5. 檢查節(jié)點(diǎn)n是否在G中,如在,返回true。
print("05. 節(jié)點(diǎn)n是否在G中:", 'n' in G)6. 圖中各節(jié)點(diǎn)的度
print("06. 圖G的各節(jié)點(diǎn)的度:",nx.degree(G))7. 圖中單個節(jié)點(diǎn)的度
print("07. 節(jié)點(diǎn)a的度:",nx.degree(G,'a'))8. 圖G的度頻率
print("08. 圖G的度頻率:",nx.degree_histogram(G))9. 圖G的密度 [無向]:d = 2m/n(n-1) [有向]:d=m/n(n-1)
print("09. 圖G的密度:",nx.density(G))10. 圖G的信息
print("10. 圖G的信息:",nx.info(G))11. 返回刪除所有邊的圖G的副本
G_1 = nx.create_empty_copy(G)12. 判斷圖G是否是有向圖
print("12. 圖G是否是有向圖:",nx.is_directed(G))13. 返回?zé)o向圖G的 有向圖視圖
G_2 = nx.to_directed(G)14. 返回有向圖G的 無向圖視圖
G_3 = nx.to_undirected(G_2)15. 圖G是否是空圖,即圖G是否無邊
print("15. 圖G是否沒有邊:",nx.is_empty(G))16. 給圖G 添加/設(shè)置 中心節(jié)點(diǎn),中心節(jié)點(diǎn)與其他節(jié)點(diǎn)序列均有邊相連,序列中第一個節(jié)點(diǎn)為中心節(jié)點(diǎn)
G_4 = nx.Graph() nx.add_star(G_4,['a','c','b','e','d']) G_4.add_node('f') G_4.add_edge('f','c')17. 給圖G 添加/設(shè)置 一條路徑,路徑順序?yàn)楣?jié)點(diǎn)序列順序
G_5 = nx.DiGraph() # 有向圖 nx.add_path(G_5,['a','b','c','d','e'])18. 給圖G 添加/設(shè)置 環(huán)
G_6 = nx.DiGraph() # 有向圖 nx.add_cycle(G_6,['a','b','c','d','e'])19. 子圖
G_7 = nx.subgraph(G_6,['a','b','c'])20. 圖G 去掉特定點(diǎn)和邊
G_8 = nx.cycle_graph(['a','b','c','d','e']) # 產(chǎn)生一個無向環(huán) G_8 = nx.restricted_view(G_8, ['e'], [('c', 'd'), ('a', 'b')])21. 圖G 改變所有邊的方向
G_9 = nx.DiGraph() nx.add_path(G_9,['a','b','c','d','e']) G_9 = nx.reverse_view(G_9)22. 圖G 返回由指定邊組成的子圖
G_10 = nx.path_graph(['a','b','c','d','e']) G_10 = G_10.edge_subgraph([('b', 'c'), ('d', 'e')])23. 鄰居節(jié)點(diǎn)
print("23. 星型圖G_4中心節(jié)點(diǎn)a的鄰居節(jié)點(diǎn)",list(nx.neighbors(G_4,'a')))24. 非鄰居節(jié)點(diǎn)
print("24. 星型圖G_4中心節(jié)點(diǎn)a的非鄰居節(jié)點(diǎn)",list(nx.non_neighbors(G_4,'a')))25. 共同鄰居節(jié)點(diǎn)
G_11 = nx.complete_graph(['a','b','c','d','e']) # 完全圖 print("25. 節(jié)點(diǎn)a和節(jié)點(diǎn)c的 共同鄰居節(jié)點(diǎn)",list(nx.common_neighbors(G_11,'a','c')))26. 返回圖中不存在的邊
G_12 = nx.create_empty_copy(G_11) # 將完全圖中的邊全部去掉 print("26. 圖G_12中不存在的邊:",list(nx.non_edges(G_12)))27. 返回圖中自環(huán)的邊
G_13 = nx.MultiDiGraph() # or Graph, DiGraph, MultiDiGraph, etc G_13.add_nodes_from(['a','b']) G_13.add_edge('a', 'a') G_13.add_edge('a', 'b') print("27. 圖G_13中存在自環(huán)的邊:",list(nx.selfloop_edges(G_13)))28. 圖中自環(huán)的數(shù)量
print("28. 圖G_13中自環(huán)的數(shù)量:",nx.number_of_selfloops(G_13))29. 圖中存在自環(huán)的節(jié)點(diǎn)
print("29. 圖G_13中存在自環(huán)的節(jié)點(diǎn):",list(nx.nodes_with_selfloops(G_13)))30. 判斷是否存在加權(quán)邊
G_14 = nx.DiGraph() G_14.add_edge('a', 'b', weight=1) print("30. 圖G_14是否存在有權(quán)邊:",nx.is_weighted(G_14))31. 判斷是否存在權(quán)值為負(fù)的邊
G_15 = nx.DiGraph() edges = [("a", "b", 3), ("b", "c", -5), ("c", "d", -2)] G_15.add_weighted_edges_from(edges) print("31. 圖G_14是否存在權(quán)值為負(fù)的邊:",nx.is_negatively_weighted(G_15))32. 判斷是否路徑是否存在
print("32. 圖G_4中是否存在c-a-b的路徑:",nx.is_path(G_4,['c','a','b']))33. 計(jì)算指定路徑的權(quán)值
print("31. 圖G_15中a-d路徑的權(quán)值:",nx.path_weight(G_15,['a','b','c','d'],'weight'))34. ER隨機(jī)圖 【fast_gnp_random_graph /// erdos_renyi_graph 】
G_er = nx.fast_gnp_random_graph(n=10, p=0.35, directed=True) # n:節(jié)點(diǎn)個數(shù) p: 邊存在的概率 directed: 是否有向圖35. WS小世界網(wǎng)絡(luò)
G_ws = nx.watts_strogatz_graph(n=10, k=4, p=0.21) # n:節(jié)點(diǎn)個數(shù) k: 與附件k個節(jié)點(diǎn)相連 p: 隨機(jī)重連概率36. BA無標(biāo)度網(wǎng)絡(luò)
G_ba = nx.barabasi_albert_graph(n=300, m=1) # n:節(jié)點(diǎn)個數(shù) m: 新節(jié)點(diǎn)連接到現(xiàn)有節(jié)點(diǎn)的邊數(shù)總結(jié)
以上是生活随笔為你收集整理的复杂网络分析——networkx的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaScript联系练习】实现一个
- 下一篇: 文字记录而已!!人民币直充/兑换PayP