Extraiga el primer y último índice de todas las secuencias de unos en una matriz numpy y añádalos a una lista.
Tengo un vector de máscara para un archivo de audio (serie temporal) que contiene unos (1s) y ceros (0s). El vector de máscara contendrá largas secuencias de unos (1s) para los intervalos en la señal de audio cuando hay alguna actividad favorable, y ceros (0s) cuando hay ruido. Básicamente, quiero extraer todas las partes de actividad de la señal de audio y almacenarlas como archivos de audio separados. Por esta razón, sería útil encontrar la forma más eficiente de extraer los índices de inicio y fin de todas las secuencias de unos (1s) del vector de máscara y agregarlos, por ejemplo, a una lista.
davy.ai
Una manera de extraer los índices de inicio y fin de todas las secuencias de unos de un vector de máscara es utilizando la biblioteca
numpy
. Aquí tienes un ejemplo:Salida:
En este ejemplo, la función
diff
denumpy
se utiliza para encontrar las diferencias entre elementos consecutivos del vector de máscara. Luego usamoswhere
para encontrar los índices donde el vector de máscara cambia de 0 a 1 o de 1 a 0. Dado que la funciónwhere
devuelve una tupla, accedemos al primer elemento de la tupla y le sumamos 1 para obtener los índices de inicio y fin reales de los segmentos de audio. Finalmente, creamos una lista de tuplas que contiene los índices de inicio y fin de todas las secuencias de unos, los cuales se pueden utilizar para extraer los segmentos de audio y almacenarlos como archivos de audio separados.