首页 > 其他分享 >Networkx的入门使用

Networkx的入门使用

时间:2022-09-30 21:45:57浏览次数:92  
标签:node 入门 DG add edge Networkx 使用 nodes 节点

创建一个图

创建一个没有边edge和节点node的空图:

import networkx as nx
G = nx.Graph()

定义:图形是节点和已识别的节点对的集合,即顶点和边(链接)的集合。
在networkx中,节点可以是任何可哈希(hashable)对象,例如:文本字符串、图像、XML对象、另一个graph、自定义节点对象等。

python中的None不能作为节点。

节点

图可以以多种形式扩张。NetworkX包括许多Graph generators工具,用于读取和写入多种格式的图。
从简单的出发,可以每次添加一个节点:

G.add_node(1)

或者从可迭代容器(iterable)(如列表)中添加多个节点:

G.add_nodes_from([2, 3])

也可以同时添加包含节点属性(节点属性此处查看)的节点,如果你的容器以(node, node_attribute_dict)2元-元组的形式:

G.add_nodes_from([
    (4, {"color": "red"}),
    (5, {"color": "green"}),
])

一个图中的节点可以合并到另一个图:

H = nx.path_graph(10)
G.add_nodes_from(H)

现在图G中节点包括原H中的节点。相反,你也可以将整个图H作为图G中的一个节点:

G.add_node(H)

现在图G是将图H作为其中一个节点。这种灵活性非常强大,因为它允许图形组成的图形,文件组成的图形,函数组成的图形等等。值得考虑如何构建应用程序,以便节点是有用的实体。当然,如果你愿意,你始终可以在G中使用唯一标识符,并按标识符键记节点信息的单独字典。

图也可以以添加一条边的形式增长:

G.add_edge(1, 2)
e = (2, 3)
G.add_edge(*e)  # unpack edge tuple*

通过接入边的列表增长:

G.add_edges_from([(1, 2), (1, 3)])

或者通过添加任何边的ebunch,ebunch是边的元组的任何可迭代容器。边的元组可以是2元组节点,也可以是3元组:在2个节点后跟边的属性(边的属性此处查看)字典,如(2, 3, {'weight': 3.1415})

G.add_edges_from(H.edges)

添加现有节点或边时没有冲突。例如,在删除所有节点和边之后:

G.clear()

添加新的节点/边时,NetworkX悄悄地忽略任何已经存在的。
举例:

G.add_edges_from([(1, 2), (1, 3)])
G.add_node(1)
G.add_edge(1, 2)
G.add_node("spam")        # adds node "spam"
G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'
G.add_edge(3, 'm')
G.number_of_nodes(), G.number_of_edges() 

此时,图G 包含 8 个节点和 3 条边
(8,3)

邻接报告(adjacency reporting)的顺序(例如,G.adj、G.successors、G.predecessors)是边添加的顺序。 然而,G.edges 的顺序是邻接的顺序,包括节点的顺序和每个节点的邻接。 请参见下面的示例(有点不明白):

DG = nx.DiGraph()
DG.add_edge(2, 1)   # adds the nodes in order 2, 1
DG.add_edge(1, 3)
DG.add_edge(2, 4)
DG.add_edge(1, 2)
assert list(DG.successors(2)) == [1, 4]
assert list(DG.edges) == [(2, 1), (2, 4), (1, 3), (1, 2)]

未完待续。。。

检查图的元素

从图中删除元素

使用图构造函数

什么能用作节点和边

访问边缘和邻居

向图、节点和边添加属性

图属性

节点属性

边属性

有向图

多图

图生成器和图操作

分析图

绘制图

本文参考https://zhuanlan.zhihu.com/p/536737592

标签:node,入门,DG,add,edge,Networkx,使用,nodes,节点
From: https://www.cnblogs.com/sharycxc/p/16746332.html

相关文章

  • 使用Python制作疫情变化图
    ​Python可以简化这个工作,提高我们的工作效率。ArcPy是一组提供了地理数据分析、数据转换、数据管理和地图自动化的工具包,会随ArcMap一同安装。本次我们用到的是ArcPy的地图......
  • gtest入门
    一、gtest简介gtest是一个跨平台(Liunx、MacOSX、Windows、Cygwin、WindowsCEandSymbian)的C++测试框架,有google公司发布。gtest测试框架是在不同平台上为编写C++测......
  • 使用 Docker 部署 MySql
    前言虽然不建议将需要持久化的数据保存在容器中,但是自己平时做个小项目玩玩还是没什么问题的。拉取镜像dockerpullmysql不加tag的话默认从DockerHub拉取最新版......
  • 配置IIS使用Python
    打开IIS管理器选择功能视图,然后选择ISAPI和CGI限制打开后,在右侧操作,点击添加,会出现下图所示按图中提示填写相应部分,在选择路径时,默认可能是dll文件,改成全部文......
  • 0047-Bytes-BytesMut使用
    环境Time2022-05-29Rust1.61.0Bytes1.1.0前言说明参考:https://docs.rs/bytes/latest/bytes/struct.BytesMut.html目标使用BytesMut的方法。with_capacity......
  • 0048-Bytes-BufMut使用
    环境Time2022-05-29Rust1.61.0Bytes1.1.0前言说明参考:https://docs.rs/bytes/latest/bytes/trait.BufMut.html目标使用BufMut的方法。remaining_mutfnma......
  • 数列分块入门
    数列分块入门算是入门了吧写在前面本人十分之Naive所以写的不好还请见谅。前置知识暴力线段树线段树貌似也不太需要,但本文建立在你已经会线段树的基础上。但真......
  • day01-数据库的安装和使用
    Java数据库的安装和使用1.数据库的作用一个问题:淘宝网、京东、微信抖音,都有各自的功能,那么我们退出系统的时候,为什么信息还在?解决之道-文件,数据库为了解决上诉问题,使用......
  • 解决Anaconda关联VSCode使用conda运行Python报错(无法将“conda”项识别为 cmdlet、函
    错误刚安装好Anaconda之后创建好VSCode环境运行Python会报错,但是仍然是可以正常运行,强迫症想解决报错PSC:\Users\Satan\Documents\Code\Python>condaactivatePyth......
  • 【2022-09-30】DRF从入门到入土(五)
    DRF视图继承关系表链接https://www.processon.com/embed/60dec4091e085359888e3e722个视图基类#之前写的5个接口,我们都是继承APIView#还可以继承GenericAPIView:它......