In order to perform zero crossing detection in NumPy arrays you can use the UliEngineering library which provides an easy-to-use zero_crossings
function:
How to install UliEngineering
UliEngineering is a Python 3 only library. Install using pip
:
sudo pip3 install -U UliEngineering
Usage example:
from UliEngineering.SignalProcessing.Utils import zero_crossings # To generate test data from UliEngineering.SignalProcessing.Simulation import sine_wave # Generate test data: 10 Hz 10ksps, 1 second (= 1D 10000 values NumPy array) data = sine_wave(frequency=10.0, samplerate=10e3) # Prints: [0, 500, 1000, 1500, ...] print(zero_crossings(data))
Thanks to Jim Brissom on StackOverflow for the original solution!