当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX subgraph_view用法及代码示例


本文简要介绍 networkx.classes.graphviews.subgraph_view 的用法。

用法:

subgraph_view(G, filter_node=<function no_filter>, filter_edge=<function no_filter>)

G 的视图在节点和边上应用过滤器。

subgraph_view 提供输入图的只读视图,该视图根据两个过滤器函数 filter_nodefilter_edge 的结果排除节点和边。

filter_node 函数接受一个参数 - 节点 - 如果节点应该包含在子图中,则返回 True ,如果不应该包含则返回 False

filter_edge 函数接受两个(如果 G 是 multi-graph 则为三个参数)——说明边的节点,加上 edge-key(如果可能有平行边)——如果应该包含边,则返回 True 在子图中,如果不应该包括 False

在查询图元素时,节点和边过滤器函数都会被调用,这意味着创建视图没有 up-front 成本。

参数

Gnetworkx.Graph

有向/无向图/多重图

filter_node可调用的,可选的

将节点作为输入的函数,如果节点应出现在视图中,则返回 True

filter_edge可调用的,可选的

将说明边的两个节点作为输入的函数(加上 edge-key,如果 G 是 multi-graph),如果边应该出现在视图中,则返回 True

返回

graphnetworkx.Graph

输入图的只读图视图。

例子

>>> G = nx.path_graph(6)

过滤函数对节点进行操作,如果节点应该出现在视图中,则返回 True

>>> def filter_node(n1):
...     return n1 != 5
...
>>> view = nx.subgraph_view(G, filter_node=filter_node)
>>> view.nodes()
NodeView((0, 1, 2, 3, 4))

我们可以使用闭包模式根据附加数据过滤图元素——例如,过滤附在图上的边数据:

>>> G[3][4]["cross_me"] = False
>>> def filter_edge(n1, n2):
...     return G[n1][n2].get("cross_me", True)
...
>>> view = nx.subgraph_view(G, filter_edge=filter_edge)
>>> view.edges()
EdgeView([(0, 1), (1, 2), (2, 3), (4, 5)])
>>> view = nx.subgraph_view(G, filter_node=filter_node, filter_edge=filter_edge,)
>>> view.nodes()
NodeView((0, 1, 2, 3, 4))
>>> view.edges()
EdgeView([(0, 1), (1, 2), (2, 3)])

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.classes.graphviews.subgraph_view。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。