Python学习教程之networkx

  

networkx是Python的一个包,用于构建和操作复杂的图结构,提供分析图的算法。图是由顶点,边和可选的属性构成的数据结构,顶点表示数据,边是由两个顶点唯一确定的,表示两个顶点之间的关系。顶点和边也可以拥有更多的属性,以存储更多的信息。

  

对于networkx创建的无向图,允许一条边的两个顶点是相同的,即允许出现自循环,但是不允许两个顶点之间存在多条边,即出现平行边。边和顶点都可以有自定义的属性,属性称作边和顶点的数据,每一个属性都是一个关键:值对。

  

  

在创建图之前,需要导入networkx模块,通常设置别名为nx;如果创建的图中,顶点之间的边没有方向,那么该图称作无向图。在创建图时,可以通过帮助(g)来获得图的帮助文档。

  

<代码>进口networkx nx

  
  

g=nx.Graph() #创建空的无向图
  g=nx.DiGraph() #创建空的有向图
  

     

<强>

  

图中的每一个顶点节点都有一个关键的ID属性,用于唯一标识一个节点,ID属性可以整数或字符类型;顶点除了ID属性之外,还可以自定义其他的属性。

  

<强> 1,向图中增加顶点

  

在向图中增加顶点时,可以一次增加一个顶点,也可以一次性增加多个顶点,顶点的ID属性是必需的。在添加顶点之后,可以通过g.nodes()函数获得图的所有顶点的视图,返回的实际上NodeView对象,如果为g.nodes (data=https://www.yisu.com/zixun/True)的数据参数设置为真,那么返回的是NodeDataView对象,该对象不仅包含每个顶点的ID属性,还包括顶点的其他属性。

        g.add_node (1)   g.add_nodes_from ([2、3、4)   g.nodes ()   # NodeView ((1、2、3、4)   
     

在向图中添加顶点时,除身份证属性之外,也可以向顶点中增加自定义的属性,例如,名称属性,权重属性:

        在在在g.add_node (name=皀1”,体重=1)   在在在g.add_node (name=n2,重量=1.2)   
     

<强> 2,查看顶点的属性

  

通过属性_node获得图的所有顶点和属性的信息,_node属性返回的是一个字典结构,字典的主要属性是顶点的ID属性,属价值性是顶点的其他属性构成的一个字典。

        在在在g._node   {1:{“名称”:“n1”、“重量”:1},2:{“名称”:“氮气”、“重量”:1.2},3:{},4:{}}   在祝辞祝辞g.nodes (data=https://www.yisu.com/zixun/True)   
     

可以通过顶点的ID属性来查看顶点的其他属性:

        在在在g.node [1]   {“名称”:“n1”,“体重”:1}   在在在g.node[1]['名称')   “n1新”      

通过g.nodes(),按照特定的条件来查看顶点:

        在在在列表(g.nodes (data=https://www.yisu.com/zixun/True))   [(1,{“时间”:“下午5点”}),(3{'时间':' 2点'}))      

<强> 3,删除顶点

  

通过删除函数删除图的顶点,由于顶点的ID属性能够唯一标识一个顶点,通常删除顶点都需要通过传递身份证属性作为参数。

        g.remove_node (node_ID)   g.remove_nodes_from (nodes_list)   
     

<强> 4,更新顶点

  

更新图的顶点,有两种方式,第一种方式使用字典结构的_update函数,第二种方式是通过索引来设置新值:

        在在在g._node [1]。更新({“名称”:“n1新”})   在在在g。节点[1]['名字']=皀1新”   {1:{“名称”:“n1新”,“体重”:1},2:{“名称”:“氮气”、“重量”:1.2},3:{},4:{}}      

<强> 5,删除顶点的属性

  

使用▽命令删除顶点的属性

  

<代码>德尔·g。节点[1](“房间”)
  

  

<强> 6日检查是否存在顶点

  

检查一个顶点是否存在于图中,可以使用n g方式来判断,也可以使用函数:

  

<代码> g.has_node (n)
  

  

  

图的边用于表示两个顶点之间的关系,因此,边是由两个顶点唯一确定的。为了表示复杂的关系,通常会为边增加一个权重重量属性,为了表示关系的类型,也会设置为边设置一个关系属性。

  

<强> 1,向图中增加边

  

边是由对应顶点的名称构成的,例如,顶点2和3之间有一条边,记作e=(2、3),通过add_edge (node1, node2)向图中添加一条边,也可以通过add_edges_from(列表)向图中添加多条边,在添加边时,如果顶点不存在,那么networkx会自动把相应的顶点加入到图中。

Python学习教程之networkx