I have a multigraph object and would like to convert it to a simple graph object with weighted edges. I have looked through the networkx documentation and can't seem to find a built in function to achieve this. I was just wondering if anyone knew of a built-in function in networkx that could achieve this goal. I looked at the to_directed() , to_undirected() functions but they don't serve my goal.
One very simple way of doing it is just to pass your multigraph as input to Graph
.
import networkx as nx G = nx.MultiGraph() G.add_nodes_from([1,2,3]) G.add_edges_from([(1, 2), (1, 2), (1, 3), (2, 3), (2, 3)]) G2 = nx.Graph(G)
This will create an undirected graph of your multigraph where multiple edges are merged into single edges. However, if you have different attributes for the edges that get merged, I don't know if there's any way of determining which attribute is kept.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With