NetworkX:用于研究复杂网络的Python软件包
NetworkX 是一个Python语言软件包,用于创建、操作和研究复杂网络的结构、动力学和函数。它用于研究以具有节点和边的图形式表示的大型复杂网络。使用 networkx 我们可以加载和存储复杂的网络。我们可以生成多种类型的随机和经典网络,分析网络结构,构建网络模型,设计新的网络算法和绘制网络。
安装包:
pip install networkx
创建节点
一次添加一个节点:
G.add_node(1)
添加节点列表:
G.add_nodes_from([2,3])
让我们在图 G 中创建节点。添加节点 1、2、3、4、7、9 后
创建边缘:
一次添加一条边:
G.add_edge(1,2)
G.add_edge(3,1)
G.add_edge(2,4)
G.add_edge(4,1)
G.add_edge(9,1)
添加边列表:
G.add_edges_from([(1,2),(1,3)])
添加边后 (1,2), (3,1), (2,4), (4,1), (9,1), (1,7), (2,9)
删除节点和边缘:
可以使用以下任何功能来拆除图形:
Graph.remove_node(), Graph.remove_nodes_from(),
Graph.remove_edge() and Graph.remove_edges_from()
删除节点 3 后
去除边缘后 (1,2)
Python
# Python program to create an undirected
# graph and add nodes and edges to a graph
# To import package
import networkx
# To create an empty undirected graph
G = networkx.Graph()
# To add a node
G.add_node(1)
G.add_node(2)
G.add_node(3)
G.add_node(4)
G.add_node(7)
G.add_node(9)
# To add an edge
# Note graph is undirected
# Hence order of nodes in edge doesn't matter
G.add_edge(1,2)
G.add_edge(3,1)
G.add_edge(2,4)
G.add_edge(4,1)
G.add_edge(9,1)
G.add_edge(1,7)
G.add_edge(2,9)
# To get all the nodes of a graph
node_list = G.nodes()
print("#1")
print(node_list)
# To get all the edges of a graph
edge_list = G.edges()
print("#2")
print(edge_list)
# To remove a node of a graph
G.remove_node(3)
node_list = G.nodes()
print("#3")
print(node_list)
# To remove an edge of a graph
G.remove_edge(1,2)
edge_list = G.edges()
print("#4")
print(edge_list)
# To find number of nodes
n = G.number_of_nodes()
print("#5")
print(n)
# To find number of edges
m = G.number_of_edges()
print("#6")
print(m)
# To find degree of a node
# d will store degree of node 2
d = G.degree(2)
print("#7")
print(d)
# To find all the neighbor of a node
neighbor_list = G.neighbors(2)
print("#8")
print(neighbor_list)
#To delete all the nodes and edges
G.clear()
输出:
#1
[1, 2, 3, 4, 7, 9]
#2
[(1, 9), (1, 2), (1, 3), (1, 4), (1, 7), (2, 4), (2, 9)]
#3
[1, 2, 4, 7, 9]
#4
[(1, 9), (1, 4), (1, 7), (2, 4), (2, 9)]
#5
5
#6
5
#7
2
#8
[4, 9]
在下一篇文章中,我们将讨论如何创建加权图、有向图和多重图。如何绘制图形。在后面的文章中,我们将看到如何使用内置函数,如深度优先搜索又名 dfs、广度优先搜索又名 BFS、dijkstra 的最短路径算法。
参考: Github 上的 Networxx