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.

Eliminación de un clúster de una matriz numpy 2D dada.

Tengo una matriz np binaria en 2D que contiene información en la siguiente figura (ejemplo). ¿Cómo puedo detectar el grupo de puntos de datos (aquí de color negro) para poder eliminar el grupo de puntos de la matriz uno por uno? Aquí, piense en controlar y eliminar los círculos de la imagen según la necesidad del usuario.

Tarea: Detección y eliminación de uno de los n grupos de puntos de datos de una matriz numpy.

Se agradecería cualquier sugerencia. [Imagen de referencia]

Enlace de imagen

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para detectar los grupos de puntos de datos en una matriz binaria 2D de numpy, se puede utilizar las funciones label y find_objects del módulo ndimage de scipy.

    Primero, importa el módulo ndimage de scipy:

    from scipy import ndimage
    

    Luego, utiliza la función label para etiquetar y asignar un valor entero único a cada grupo en la matriz binaria:

    labels, num_features = ndimage.label(binary_array)
    

    Esto crea una nueva matriz, labels, que asigna cada píxel a un grupo basado en su valor entero único. La variable num_features contendrá el número total de grupos encontrados.

    Puedes utilizar la función find_objects para obtener una lista de segmentos que corresponden a la caja delimitadora de cada grupo:

    slices = ndimage.find_objects(labels)
    

    Esto devuelve una lista de tuplas, donde cada tupla contiene un objeto de segmento para cada grupo. El objeto de segmento se puede utilizar para indexar en la matriz original y eliminar el grupo.

    Para eliminar un grupo, puedes establecer todos los píxeles en el segmento en cero:

    cluster_index = 0  # elige el grupo que deseas eliminar
    binary_array[slices[cluster_index]] = 0
    

    Esto establece todos los píxeles en el grupo seleccionado en cero, eliminándolo efectivamente de la matriz.

    Puedes repetir este proceso para cada grupo que necesite ser eliminado para lograr el resultado deseado.

Comments are closed.