當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NetworkX Graph.subgraph用法及代碼示例


本文簡要介紹 networkx.Graph.subgraph 的用法。

用法:

Graph.subgraph(nodes)

返回在 nodes 上誘導的子圖的 SubGraph 視圖。

圖的誘導子圖包含 nodes 中的節點以及這些節點之間的邊。

參數

nodes列表,可迭代

將迭代一次的節點容器。

返回

GSubGraph 查看

圖的子圖視圖。圖結構不能更改,但節點/邊屬性可以並且與原始圖共享。

注意

圖、邊和節點屬性與原始圖共享。視圖排除了對圖形結構的更改,但對屬性的更改會反映在原始圖形中。

要創建具有自己的邊/節點屬性副本的子圖,請使用:G.subgraph(nodes).copy()

要將圖就地簡化為子圖,您可以刪除節點: G.remove_nodes_from([n for n in G if n not in set(nodes)])

子圖視圖有時不是您想要的。在大多數情況下,如果您想做的不僅僅是查看誘導邊,使用以下代碼將子圖創建為自己的圖更有意義:

# Create a subgraph SG based on a (possibly multigraph) G
SG = G.__class__()
SG.add_nodes_from((n, G.nodes[n]) for n in largest_wcc)
if SG.is_multigraph():
    SG.add_edges_from((n, nbr, key, d)
        for n, nbrs in G.adj.items() if n in largest_wcc
        for nbr, keydict in nbrs.items() if nbr in largest_wcc
        for key, d in keydict.items())
else:
    SG.add_edges_from((n, nbr, d)
        for n, nbrs in G.adj.items() if n in largest_wcc
        for nbr, d in nbrs.items() if nbr in largest_wcc)
SG.graph.update(G.graph)

例子

>>> G = nx.path_graph(4)  # or DiGraph, MultiGraph, MultiDiGraph, etc
>>> H = G.subgraph([0, 1, 2])
>>> list(H.edges)
[(0, 1), (1, 2)]

相關用法


注:本文由純淨天空篩選整理自networkx.org大神的英文原創作品 networkx.Graph.subgraph。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。