日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

复杂网络分析——networkx的使用

發布時間:2023/12/18 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 复杂网络分析——networkx的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 基本圖操作

導包
import networkx as nx import matplotlib.pyplot as plt
建立一個空的無向圖G
G = nx.Graph() # DiGraph() 有向圖
添加一個節點a
G.add_node('a')
加點集合
G.add_nodes_from(['b','c','d','e'])
加邊
G.add_edge('a','b') G.add_edges_from([('b','c'),('a','d')])

2. 其他方法

1.節點數量
print("01. 圖G的節點數:",G.number_of_nodes())
2. 輸出全部的節點
print("02. 圖G的全部節點:",G.nodes())
3. 輸出全部的邊
print("03. 圖G的全部邊:",G.edges())
4. 輸出邊的數量
print("04. 圖G的邊數:",G.number_of_edges())
5. 檢查節點n是否在G中,如在,返回true。
print("05. 節點n是否在G中:", 'n' in G)
6. 圖中各節點的度
print("06. 圖G的各節點的度:",nx.degree(G))
7. 圖中單個節點的度
print("07. 節點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. 返回無向圖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 添加/設置 中心節點,中心節點與其他節點序列均有邊相連,序列中第一個節點為中心節點
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 添加/設置 一條路徑,路徑順序為節點序列順序
G_5 = nx.DiGraph() # 有向圖 nx.add_path(G_5,['a','b','c','d','e'])
18. 給圖G 添加/設置 環
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 去掉特定點和邊
G_8 = nx.cycle_graph(['a','b','c','d','e']) # 產生一個無向環 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. 鄰居節點
print("23. 星型圖G_4中心節點a的鄰居節點",list(nx.neighbors(G_4,'a')))
24. 非鄰居節點
print("24. 星型圖G_4中心節點a的非鄰居節點",list(nx.non_neighbors(G_4,'a')))
25. 共同鄰居節點
G_11 = nx.complete_graph(['a','b','c','d','e']) # 完全圖 print("25. 節點a和節點c的 共同鄰居節點",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. 返回圖中自環的邊
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中存在自環的邊:",list(nx.selfloop_edges(G_13)))
28. 圖中自環的數量
print("28. 圖G_13中自環的數量:",nx.number_of_selfloops(G_13))
29. 圖中存在自環的節點
print("29. 圖G_13中存在自環的節點:",list(nx.nodes_with_selfloops(G_13)))
30. 判斷是否存在加權邊
G_14 = nx.DiGraph() G_14.add_edge('a', 'b', weight=1) print("30. 圖G_14是否存在有權邊:",nx.is_weighted(G_14))
31. 判斷是否存在權值為負的邊
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是否存在權值為負的邊:",nx.is_negatively_weighted(G_15))
32. 判斷是否路徑是否存在
print("32. 圖G_4中是否存在c-a-b的路徑:",nx.is_path(G_4,['c','a','b']))
33. 計算指定路徑的權值
print("31. 圖G_15中a-d路徑的權值:",nx.path_weight(G_15,['a','b','c','d'],'weight'))
34. ER隨機圖 【fast_gnp_random_graph /// erdos_renyi_graph 】
G_er = nx.fast_gnp_random_graph(n=10, p=0.35, directed=True) # n:節點個數 p: 邊存在的概率 directed: 是否有向圖
35. WS小世界網絡
G_ws = nx.watts_strogatz_graph(n=10, k=4, p=0.21) # n:節點個數 k: 與附件k個節點相連 p: 隨機重連概率
36. BA無標度網絡
G_ba = nx.barabasi_albert_graph(n=300, m=1) # n:節點個數 m: 新節點連接到現有節點的邊數

總結

以上是生活随笔為你收集整理的复杂网络分析——networkx的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。