intersection_all#

intersection_all(graphs)[源代码]#

返回一个新图,该图仅包含存在于所有图中的节点和边。

参数:
graphs可迭代对象

NetworkX 图的可迭代对象

返回:
R一个新图,其类型与列表中的第一个图相同
抛出:
ValueError

如果 graphs 是一个空列表。

NetworkXError

如果图中包含混合类型,例如 MultiGraph 和 Graph,或者有向图和无向图混合。

注意

对于混合类型的图操作,应先将它们转换为相同的类型。

图、节点和边的属性不会复制到新图中。

如果需要,可以通过属性更新结果图。例如,可以编写代码来添加所有图中每个节点的最小属性。 >>> g = nx.Graph() >>> g.add_node(0, capacity=4) >>> g.add_node(1, capacity=3) >>> g.add_edge(0, 1)

>>> h = g.copy()
>>> h.nodes[0]["capacity"] = 2
>>> gh = nx.intersection_all([g, h])
>>> new_node_attr = {
...     n: min(*(anyG.nodes[n].get("capacity", float("inf")) for anyG in [g, h]))
...     for n in gh
... }
>>> nx.set_node_attributes(gh, new_node_attr, "new_capacity")
>>> gh.nodes(data=True)
NodeDataView({0: {'new_capacity': 2}, 1: {'new_capacity': 3}})

示例

>>> G1 = nx.Graph([(1, 2), (2, 3)])
>>> G2 = nx.Graph([(2, 3), (3, 4)])
>>> R = nx.intersection_all([G1, G2])
>>> list(R.nodes())
[2, 3]
>>> list(R.edges())
[(2, 3)]