dgl.remove_edges

dgl.remove_edges(g, eids, etype=None, store_ids=False)[source]

移除指定的边并返回一个新图。

同时删除边的特征。这些边必须存在于图中。即使在移除边后某些节点变孤立,结果图与输入图具有相同数量的节点。

参数:
  • eids (int, Tensor, iterable[int]) – 要移除的边的 ID。

  • etype (str(str, str, str), 可选) –

    边的类型名称。允许的类型名称格式为

    • (str, str, str) 表示源节点类型、边类型和目标节点类型。

    • 或者如果该名称可以唯一标识图中的三元组格式,则为一个 str 边类型名称。

    如果图只有一种边类型,则可以省略。

  • store_ids (bool, 可选) – 如果为 True,它将在结果图的 ndataedata 中,分别以名称 dgl.NIDdgl.EID 存储提取的节点和边的原始 ID。

返回值:

删除了边的图。

返回值类型:

DGLGraph

附注

此函数保留批处理信息。

示例

>>> import dgl
>>> import torch

同构图

>>> g = dgl.graph((torch.tensor([0, 0, 2]), torch.tensor([0, 1, 2])))
>>> g.edata['he'] = torch.arange(3).float().reshape(-1, 1)
>>> g = dgl.remove_edges(g, torch.tensor([0, 1]))
>>> g
Graph(num_nodes=3, num_edges=1,
    ndata_schemes={}
    edata_schemes={'he': Scheme(shape=(1,), dtype=torch.float32)})
>>> g.edges('all')
(tensor([2]), tensor([2]), tensor([0]))
>>> g.edata['he']
tensor([[2.]])

异构图

>>> 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 = dgl.remove_edges(g, torch.tensor([0, 1]), 'plays')
>>> g.edges('all', etype='plays')
(tensor([1, 2]), tensor([1, 1]), tensor([0, 1]))