dgl.add_nodes

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

Add the given number of nodes to the graph and return a new graph.

The new nodes will have IDs starting from g.num_nodes(ntype).

Parameters
  • num (int) – The number of nodes to add.

  • data (dict[str, Tensor], optional) – Feature data of the added nodes. The keys are feature names while the values are feature data.

  • ntype (str, optional) – The node type name. Can be omitted if there is only one type of nodes in the graph.

Returns

The graph with newly added nodes.

Return type

DGLGraph

Notes

  • For features in g but not in data, DGL assigns zero features for the newly added nodes.

  • For feature in data but not in g, DGL assigns zero features for the existing nodes in the graph.

Examples

The following example uses PyTorch backend.

>>> import dgl
>>> import torch

Homogeneous Graphs

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

If the graph has some node features and new nodes are added without features, their features will be filled with zeros.

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

Assign features for the new nodes.

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

Since data contains new feature fields, the features for existing nodes will be filled with zeros.

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

Heterogeneous Graphs

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