Python Network(一)基础入门(节点和边基本概念,网络统计量)

本文介绍了Python Network的基础知识,包括无向图、有向图和多图的概念,以及节点和边的创建与属性。接着讨论了如何添加和删除节点、边,以及边的属性。此外,文章还深入探讨了社会网络的统计量,如网络密度、直径、聚类系数、中心性和最短路径计算。通过实例展示了如何运用这些概念进行网络分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1基础

首先是包的导入

import networkx as nx

以下基本图形类型作为Python类提供:

图形:此类实现无向图。它忽略两个节点之间的多个边。它确实允许节点与其自身之间的自环边缘。
图:有向图,即有向边的图。有向图(图的子类)共有的操作。
多图:灵活的图类,允许在成对的节点之间存在多个无向边。附加的灵活性会导致性能降低,尽管通常并不明显。
多图:MultiGraph的有向版本。

G=nx.Graph() # 无向图
G=nx.DiGraph() # 有向图
G=nx.MultiGraph() # 多图
G=nx.MultiDiGraph()# 多图有向

所有图类均允许任何可哈希对象作为节点。可哈希对象包括字符串,元组,整数等。诸如权重和标签之类的任意边缘属性都可以与边缘相关联。

2节点和边

指定图形时,您必须做的下一个选择是使用哪种类型的节点和边。

如果您只关心网络的拓扑,则可以使用整数或字符串作为节点,并且您不必担心边缘数据。如果您已经有一个描述节点的数据结构,您可以简单地使用该结构作为节点,只要它是可哈希的即可。如果不可散列,则可以使用唯一标识符表示节点,并将数据分配为节点属性。

边缘通常具有与之关联的数据。任意数据可以与边关联作为边属性。如果数据是数字并且目的是表示加权图,则对属性使用“ weight”关键字。一些图算法,例如Dijkstra的最短路径算法,使用此属性名称来获取每个边的权重。

添加边时,可以使用关键字/值对将其他属性分配给边。您可以使用除’weight’以外的任何关键字来命名属性,然后可以通过该属性关键字轻松查询边缘数据。

一旦决定了如何对节点和边进行编码,以及是否具有带或不带多边的无向/有向图,就可以构建网络了。

3图创建

可以通过以下三种方式之一创建NetworkX图形对象:

图生成器–创建网络拓扑的标准算法。

  • 从预先存在的(通常是文件)源中导入数据。
  • 显式添加边缘和节点。
  • 显式添加和删除节点/边缘最容易描述。每个图对象都提供了操作图的方法
import networkx as nx
G=nx.Graph()
G.add_edge(1,2)  # 默认边缘数据为1
G.add_edge(2,3,weight=0.9) # 指定边缘数据

边缘属性可以是任何东西:

import math
G.add_edge('y','x',function=math.cos)
G.add_node(math.cos) # 任何可哈希可以是一个节点

您可以一次添加许多边:

elist=[('a','b',5.0),('b','c',3.0),('a','c',1.0),('c','d',7.3)]
G.add_weighted_edges_from(elist)

test

import networkx as nx
G=nx.Graph()
# 添加节点
G.add_node(1)  # 添加节点可以添加一个节点,后来发现,无论数字填几,都是只出现一个点
G.add_nodes_from([4,2,3]) #  添加节点也可以添加列表
H=nx.path_graph(10) #添加任何nbunch节点,nbunch是节点的任何可迭代容器,它本身不是图中的节点。(如列表、集合、图表、文件等)
G.add_nodes_from(H) #G现在包含H的节点作为G的节点,相反,也可以将图H用作G中的节点。G.add_node(H)

# 添加连线
G.add_edge(1,2) #通过一次添加一条边来生长G
e=(2,3)
G.add_edge(*e) # 打开边缘元组*
G.add_edges_from([(1,2),(1,3)]) #通过添加边列表来生长G
G.add_edges_from(H.edges()) #添加任何nbunch边

# 移除边或点
G.remove_node(1)
G.remove_nodes_from(H)
G.remove_edge() 
G.remove_edges_from()

nx.draw(G) # 绘图
G.number_of_nodes() #查询节点数
G.number_of_edges() #查询边数
G.nodes() # 查询节点
G.edges() #查询边
G.neighbors(1) # 查询1的邻近

当然,你也可以通过G.clear()来清理图中的内容

import networkx as nx
G=nx.Graph()
# 增加节点
G.add_node(1)
G.
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值