Networkx的入门使用

1|0创建一个图

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

import networkx as nx G = nx.Graph()

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

python中的None不能作为节点。

2|0节点

图可以以多种形式扩张。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中使用唯一标识符,并按标识符键记节点信息的单独字典。

3|0

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

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)]

未完待续。。。

4|0检查图的元素

5|0从图中删除元素

6|0使用图构造函数

7|0什么能用作节点和边

8|0访问边缘和邻居

9|0向图、节点和边添加属性

9|1图属性

9|2节点属性

9|3边属性

10|0有向图

11|0多图

12|0图生成器和图操作

13|0分析图

14|0绘制图

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


__EOF__

本文作者Sharycxc
本文链接https://www.cnblogs.com/sharycxc/p/16746332.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Sharycxc  阅读(176)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示