dgl.add_nodes

dgl.add_nodes(g, num, data=None, ntype=None)[源码]

向图中添加指定数量的节点并返回一个新图。

新节点的 ID 将从 g.num_nodes(ntype) 开始。

参数:
  • num (int) – 要添加的节点数量。

  • data (dict[str, Tensor], optional) – 添加节点的特征数据。键是特征名,值是特征数据。

  • ntype (str, optional) – 节点类型名称。如果图中只有一种类型的节点,则可以省略。

返回:

添加新节点后的图。

返回类型:

DGLGraph

说明

示例

以下示例使用 PyTorch 后端。

>>> import dgl
>>> import torch

同构图

>>> g = dgl.graph((torch.tensor([0, 1]), torch.tensor([1, 2])))
>>> g.num_nodes()
3
>>> g = dgl.add_nodes(g, 2)
>>> g.num_nodes()
5

如果图具有某些节点特征,并且添加的新节点没有特征,则它们的特征将用零填充。

>>> g.ndata['h'] = torch.ones(5, 1)
>>> g = dgl.add_nodes(g, 1)
>>> g.ndata['h']
tensor([[1.], [1.], [1.], [1.], [1.], [0.]])

为新节点分配特征。

>>> g = dgl.add_nodes(g, 1, {'h': torch.ones(1, 1), 'w': torch.ones(1, 1)})
>>> g.ndata['h']
tensor([[1.], [1.], [1.], [1.], [1.], [0.], [1.]])

由于 data 包含新的特征字段,现有节点的特征将用零填充。

>>> g.ndata['w']
tensor([[0.], [0.], [0.], [0.], [0.], [0.], [1.]])

异构图

>>> g = dgl.heterograph({
...     ('user', 'plays', 'game'): (torch.tensor([0, 1, 1, 2]),
...                                 torch.tensor([0, 0, 1, 1])),
...     ('developer', 'develops', 'game'): (torch.tensor([0, 1]),
...                                         torch.tensor([0, 1]))
...     })
>>> g.num_nodes('user')
3
>>> g = dgl.add_nodes(g, 2, ntype='user')
>>> g.num_nodes('user')
5