es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python – igraph encontrar todos los vértices de una categoría específica.

Hola, tengo el siguiente problema con la librería igraph en Python. He creado un árbol simple de la siguiente manera:

from igraph import *
import numpy as np

p = Graph(directed=True)
p.degree(mode='in')

p.add_vertices(2)
p.vs["label"] = ["Anna", "Peter"]
p.vs["category"] = np.full(2,1)

p.add_vertices(1)
p.vs[-1]["label"] = "Michael"
p.vs[-1]["category"] = -1

result = p.vs.find(category=1)["label"]

print(result)

Con el comando p.vs.find(category=1)["label"] quiero encontrar todos los vértices que tienen la misma categoría que 1. Esto significa que espero una lista ["Anna", "Peter"]. Pero por alguna razón, mi resultado es solo:

Anna

¿Cómo puedo solucionar esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la línea en la que estás agregando el tercer vértice al grafo. No estás especificando ninguna conexión, por lo que el nuevo vértice no está conectado a los vértices existentes. Por lo tanto, no se está incluyendo en el cálculo de los grados, categorías o cualquier otra cosa que dependa de la estructura del grafo.

    Para solucionar esto, puedes agregar conexiones para conectar el nuevo vértice con los existentes. Por ejemplo:

    p.add_vertices(1)
    p.add_edges([(0, 2), (1, 2)])  # conectar el nuevo vértice a Anna y Peter
    
    p.vs[-1]["label"] = "Michael"
    p.vs[-1]["category"] = -1
    
    result = p.vs.select(category=1)["label"]  # usa select en lugar de find
    
    print(result)
    

    Esto debería darte la salida esperada de ["Anna", "Peter"].

Comments are closed.