Graph | NetworkX 入门教程

安装

最新稳定版NetworkX支持 Python 3.8, 3.9, or 3.10

pip install networkx[default]

创建一个图

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

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

python 中的 None不能作为节点。
import networkx as nx
G = nx.Graph()

节点

图可以以多种形式扩张。NetworkX包括许多图生成函数工具,用于读取和写入多种格式的图。

作为简单开始,可以每次添加一个节点:

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 包含 8 个节点和 3 条边

>>> G.number_of_nodes()
8
>>> G.number_of_edges()
3
邻接报告(adjacency reporting)的顺序(例如, G.adjG.successors
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值