python networkx库_python之networkx库小结
備戰(zhàn)數(shù)模,還是知道多點(diǎn)好。networkx這個(gè)庫(kù)的話,畫網(wǎng)絡(luò)圖賊好用。
一、安裝
安裝的話,跟其他包的安裝差不多吧。我用的是anaconda就不用裝了。其他的話,就用pip install networkx吧,最好的話,需要裝下malplotlib這個(gè)庫(kù)。
二、建立圖
import networkx as nx
G=nx.Graph()#創(chuàng)建空的簡(jiǎn)單圖
G=nx.DiGraph()#創(chuàng)建空的簡(jiǎn)單有向圖
G=nx.MultiGraph()#創(chuàng)建空的多圖
G=nx.MultiDiGraph()#創(chuàng)建空的有向多圖加點(diǎn)、加邊
G.add_node(1)#加1這個(gè)點(diǎn)
G.add_node(1,1)#用(1,1)這個(gè)坐標(biāo)加點(diǎn)
G.add_nodes_from([2,3])#加列表中的點(diǎn)
G.add_edge(1,2)#加邊,起點(diǎn)是1終點(diǎn)是2
G.add_weight_edge(1,2,3.0)#第三個(gè)是權(quán)值
G.add_edges_from(list)#添加列表中的邊
G.add_weight_edges_from(list)刪除點(diǎn)和邊的話G.remove_node()
G.remove_nodes_from()
G.remove_edge()
G.remove_edges_from()
G.clear()遍歷點(diǎn)和邊的話G.add_nodes_from([1,2,3])
for n in G.nodes():
print(n)
G.add_edges_from([(1,2),(1,3)])
for e in G.edges():
print(e)
print(G.degree())輸出:1
2
3
(1, 2)
(1, 3)
[(1, 2), (2, 1), (3, 1)]#1這個(gè)點(diǎn)有兩條邊連著,2、3只有一條邊連著一些特殊的圖的生成:
k_5=nx.complete_graph(5)#完全圖
k_3_3=nx.complete_bipartite_graph(3,3)#完全二分圖三、畫網(wǎng)絡(luò)圖
這就要用到matplotlib這個(gè)庫(kù)了。
from matplotlib import pyplot as plt
import networkx as nx
G=nx.Graph()
G.add_nodes_from([1,2,3])
G.add_edges_from([(1,2),(1,3)])
nx.draw_networkx(G)
plt.show()輸出:
這個(gè)應(yīng)該是最簡(jiǎn)單的用法了。復(fù)雜的圖的,還有各種參數(shù)的使用只能去networkx的GitHub上看了
四、最短路徑的運(yùn)用
1、無權(quán)無向圖最短路徑
from matplotlib import pyplot as plt
import networkx as nx
G=nx.path_graph(5)
path=nx.single_source_shortest_path(G,2)
length=nx.single_source_shortest_path_length(G,2)
print(path)
print(length)
nx.draw_networkx(G)
plt.show()輸出:{2: [2], 1: [2, 1], 3: [2, 3], 0: [2, 1, 0], 4: [2, 3, 4]}
{2: 0, 1: 1, 3: 1, 0: 2, 4: 2}
2、有權(quán)無向圖
以我上個(gè)博客為例子吧。from matplotlib import pyplot as plt
import networkx as nx
nodes=[0,1,2,3,4]
edges=[(0,1,10),(0,3,30),(0,4,100),(1,2,50),(2,3,20),(2,4,10),(3,4,60)]
G=nx.Graph()
G.add_nodes_from(nodes)
G.add_weighted_edges_from(edges)
path=nx.single_source_dijkstra_path(G,4)
length=nx.single_source_dijkstra_path_length(G,4)
print(path)
print(length)
nx.draw_networkx(G)
plt.show()輸出:{4: [4], 0: [4, 2, 3, 0], 2: [4, 2], 3: [4, 2, 3], 1: [4, 2, 1]}
{4: 0, 2: 10, 3: 30, 1: 60, 0: 60}
可以好好跟我的上個(gè)博客對(duì)比一下。
五、參考
https://networkx.github.io/documentation/networkx-1.9
總結(jié)
以上是生活随笔為你收集整理的python networkx库_python之networkx库小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql错误1300怎么解决_pt-o
- 下一篇: python函数调用追踪_Python函