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