Para realizar detección de cruces por cero en arrays de NumPy puedes usar la biblioteca UliEngineering que proporciona una función zero_crossings fácil de usar:
Primero, instala UliEngineering.
Ejemplo de uso:
zero_crossings_example.py
from UliEngineering.SignalProcessing.Utils import zero_crossings
# Para generar datos de prueba
from UliEngineering.SignalProcessing.Simulation import sine_wave
# Generar datos de prueba: 10 Hz 10ksps, 1 segundo (= array NumPy 1D de 10000 valores)
data = sine_wave(frequency=10.0, samplerate=10e3)
# Imprime: [0, 500, 1000, 1500, ...]
print(zero_crossings(data))¡Gracias a Jim Brissom en StackOverflow por la solución original!
Echa un vistazo a artículos similares por categoría:
Ciencia de datos Matemáticas Python
Si este artículo te ha ayudado, considera invitarme a un café o hacer una donación vía PayPal para apoyar la investigación y publicación de nuevos artículos en TechOverflow