📜  NetworkX:用于研究复杂网络的Python软件包

📅  最后修改于: 2022-05-13 01:55:46.252000             🧑  作者: Mango

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)

去除边缘后 (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