Efficiently detect sign-changes in python

前端 未结 7 1488
深忆病人
深忆病人 2020-11-29 20:28

I want to do exactly what this guy did:

Python - count sign changes

However I need to optimize it to run super fast. In brief I want to take a time series an

7条回答
  •  [愿得一人]
    2020-11-29 21:15

    What about:

    import numpy
    a = [1, 2, 1, 1, -3, -4, 7, 8, 9, 10, -2, 1, -3, 5, 6, 7, -10]
    zero_crossings = numpy.where(numpy.diff(numpy.sign(a)))[0]
    

    Output:

    > zero_crossings
    array([ 3,  5,  9, 10, 11, 12, 15])
    

    I.e., zero_crossings will contain the indices of elements before which a zero crossing occurs. If you want the elements after, just add 1 to that array.

提交回复
热议问题