我不一定要合并两个networkx图,如kind of question所示。我想要做的是将n
图表分别保存在内存中,并且能够通过边缘连接每个图形。我不想将它们合并到一个更大的图表中,因为我预计每个子图将按原样占用合理的内存量,并且我希望能够分离内存用于并行处理目的的对象。
实际上,我想通过EdgeXA_BY将GraphA,NodeX链接到GraphB,NodeY,但是该边缘不会在变量中创建新的超图(即,使GraphA膨胀以包含来自的所有边/节点) GraphB)。
如果我遍历GraphA并且我需要访问GraphB,我可以将该边缘跟随到内存对象。
在NetworkX中是否可以这样做,或者我是否需要有一些图形对象的内部映射,可以根据需要将每个子图加载到内存中?
答案 0 :(得分:1)
图表的节点可以是图表。
import networkx as nx
G=nx.Graph()
H=nx.Graph()
S=nx.Graph() #the (super)graph of graphs
H.add_edge(1,2)
G.add_edge('parrot','Norway')
S.add_edge(H,G)
S.edges()
> [(<networkx.classes.graph.Graph at 0x1063dd390>,
<networkx.classes.graph.Graph at 0x1063dd350>)]
S.neighbors(H)
> [<networkx.classes.graph.Graph at 0x1063dd390>]
可能有一种方法可以让它使用您想要分配的名称而不是默认类型和内存位置来返回它们。我不知道如何随便做 - 如果有人这样做,请发表评论,以便我可以更新这个答案。