sagen, dass ich zwei NetworkX Graphen haben, G
und H
:Kombinieren (Join) NetworkX Graphen
G=nx.Graph()
fromnodes=[0,1,1,1,1,1,2]
tonodes=[1,2,3,4,5,6,7]
for x,y in zip(fromnodes,tonodes):
G.add_edge(x,y)
H=nx.Graph()
fromnodes=range(2,8)
tonodes=range(8,14)
for x,y in zip(fromnodes,tonodes):
H.add_edge(x,y)
Was ist der beste Weg, um die beiden NetworkX Graphen zu verbinden?
Ich möchte die Knotennamen beibehalten (beachten Sie die gemeinsamen Knoten, 2 bis 7). Als ich nx.disjoint_union(G,H)
verwendet, dies ist nicht geschehen:
>>> G.nodes()
[0, 1, 2, 3, 4, 5, 6, 7]
>>> H.nodes()
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
>>> Un= nx.disjoint_union(G,H)
>>> Un.nodes()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
#
Die H
Knoten Etiketten geändert wurden (nicht das, was ich will). Ich möchte die Graphen an den Knoten mit der gleichen Nummer verbinden.
Hinweis. Dies ist kein Duplikat von Combine two weighted graphs in NetworkX.
Was möchten Sie tun, wenn in beiden eine Kante vorhanden ist? Sollte es eine doppelte Kante werden? oder nur eine einzelne Kante? – Joel
@Joel hmm Ich interessiere mich für beide Fälle. Sagen wir Single Edge. – atomh33ls
Der Ein-Rand-Fall wird mit dem Code, den Sie geschrieben haben, in Ordnung gebracht. Der Multidge-Fall, den Sie gerade tun 'U = nx.MultiGraph()' – Joel