Angesichts irgendeines Graphen G, der in NetworkX erstellt wurde, möchte ich G.edges() einige Gewichtung zuweisen können, nachdem das Diagramm erstellt wurde. Die beteiligten Graphen sind Gitter, erdos-reyni, barabasi-albert und so weiter.NetworkX: Wie man Gewichte zu einer vorhandenen G.edges() hinzufügt?
mein G.edges()
Gegeben:
[(0, 1), (0, 10), (1, 11), (1, 2), (2, 3), (2, 12), ...]
Und mein weights
:
{(0,1):1.0, (0,10):1.0, (1,2):1.0, (1,11):1.0, (2,3):1.0, (2,12):1.0, ...}
Wie kann ich jede Kante die entsprechende Gewicht zuweisen? In diesem trivialen Fall alle Gewichte sind 1.
Ich habe versucht, die Gewichte zu G.edges() direkt wie diese
for i, edge in enumerate(G.edges()):
G.edges[i]['weight']=weights[edge]
Aber ich bekomme diese Fehlermeldung hinzuzufügen:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-48-6119dc6b7af0> in <module>()
10
11 for i, edge in enumerate(G.edges()):
---> 12 G.edges[i]['weight']=weights[edge]
TypeError: 'instancemethod' object has no attribute '__getitem__'
Was ist los? Da G.edges()
eine Liste ist, warum kann ich nicht wie bei jeder anderen Liste auf ihre Elemente zugreifen?
In Ordnung, also, was schlagen Sie vor? – FaCoffee
@ CF84 Siehe Aktualisierung. –
Danke. Da ich später auf den Randdatenschlüssel zugreifen muss, der dem Gewicht zugeordnet ist (ich muss die Inzidenzmatrix berechnen), was wäre das in Ihrem Beispiel? Ich kann es nicht finden, also nehme ich an, dass es keine gibt. Wie man es hinzufügt? – FaCoffee