Derivative of an array in python?

后端 未结 3 1074
刺人心
刺人心 2021-01-01 01:58

Currently I have two numpy arrays: x and y of the same size.

I would like to write a function (possibly calling numpy/scipy... functions if

相关标签:
3条回答
  • 2021-01-01 02:17

    This is not a simple problem, but there are a lot of methods that have been devised to handle it. One simple solution is to used finite difference methods. The command `numpy.diff' uses finite differencing where you can specific the order of the derivative. Wikipedia also has a page that lists the needed finite differencing coefficients for different derivatives of different accuracies. If the numpy function doesn't do what you want.

    Depending on your application you can also use scipy.fftpack.diff which uses a completely different technique to do the same thing. Though your function needs a well defined Fourier transform.

    There are lots and lots and lots of variants (e.g. summation by parts finite differencing operators or operators designed to preserve known evolution constants in your system of equations) on both of the two ideas above. What you should do will depend a great deal on what the problem is that you are trying to solve.

    The good thing is that there a lot of work has been done on the field. The Wikipedia page for Numerical Differentiation has some resources (though it is focused on finite differencing techniques).

    0 讨论(0)
  • 2021-01-01 02:18

    The findiff project is a Python package that can do derivatives of arrays of any dimension with any desired accuracy order (of course depending on your hardware restrictions). It can handle arrays on uniform as well as non-uniform grids and also create generalizations of derivatives, i.e. general linear combinations of partial derivatives with constant and variable coefficients.

    0 讨论(0)
  • 2021-01-01 02:19

    Would something like this solve your problem?

    def get_inflection_points(arr, n=1):
        """
        returns inflextion points from array
            arr: array
            n: n-th discrete difference
        """
        inflections = []
        dx = 0
        for i, x in enumerate(np.diff(arr, n)):
            if x >= dx and i > 0:
                inflections.append(i*n)
            dx = x
        return inflections
    
    
    0 讨论(0)
提交回复
热议问题