Saltar al contenido

Obtenga el grado de cada nodo en un gráfico por Networkx en python

Luego de de esta larga búsqueda de información pudimos resolver este inconveniente que tienen muchos los lectores. Te compartimos la solución y esperamos resultarte de mucha ayuda.

Solución:

Está utilizando la versión 2.0 de networkx. Que cambió de usar un dict por G.degree() a usar un dict-like (pero no dict) DegreeView. Consulte esta guía.

Para tener los grados en una lista, puede usar una lista de comprensión:

degrees = [val for (node, val) in G.degree()]

Me gustaría agregar lo siguiente: si está inicializando el gráfico no dirigido con nx.Graph() y agregando los bordes después, solo tenga en cuenta que networkx no garantiza que se conserve el orden de los nodos; esto también se aplica a degree(). Esto significa que si utiliza el enfoque de comprensión de lista y luego intente acceder al grado por índice de lista, es posible que los índices no correspondan a los nodos correctos. Si desea que se correspondan, puede hacer lo siguiente:

degrees = [val for (node, val) in sorted(G.degree(), key=lambda pair: pair[0])]

Aquí hay un ejemplo simple para ilustrar esto:

>>> edges = [(0, 1), (0, 3), (0, 5), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (2, 5)]
>>> g = nx.Graph()
>>> g.add_edges_from(edges)
>>> print(g.degree())
[(0, 3), (1, 4), (3, 3), (5, 2), (2, 4), (4, 2)]
>>> print([val for (node, val) in g.degree()])
[3, 4, 3, 2, 4, 2]
>>> print([val for (node, val) in sorted(g.degree(), key=lambda pair: pair[0])])
[3, 4, 4, 3, 2, 2]

Reseñas y puntuaciones de la guía

Si haces scroll puedes encontrar las observaciones de otros programadores, tú además puedes dejar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *