How do I integrate two 1-D data arrays in Python?

前端 未结 2 1150
南笙
南笙 2020-12-31 03:56

I have two tabulated data arrays, x and y, and I don\'t know the function that generated the data. I want to be able to evaluate the integral of the line produced by the dat

相关标签:
2条回答
  • 2020-12-31 04:30

    Scipy has some nice tools to perform numerical integration.

    For example, you can use scipy.integrate.simps to perform simpson's Rule, and you can pass it the following:

    scipy.integrate.simps(y, x=None, dx=1, axis=-1, even='avg')

    Parameters :
    y : array_like Array to be integrated.

    x : array_like, optional If given, the points at which y is sampled.

    dx : int, optional Spacing of integration points along axis of y. Only used when x is None. Default is 1.

    axis : int, optional Axis along which to integrate. Default is the last axis.

    even : {‘avg’, ‘first’, ‘str’}, optional

    ‘avg’ : Average two results:1) use the first N-2 intervals with a trapezoidal rule on the last interval and 2) use the last N-2 intervals with a trapezoidal rule on the first interval.

    ‘first’ : Use Simpson’s rule for the first N-2 intervals with a trapezoidal rule on the last interval.

    ‘last’ : Use Simpson’s rule for the last N-2 intervals with a trapezoidal rule on the first interval.

    So you can use your two arrays to do numerical integration.

    0 讨论(0)
  • 2020-12-31 04:35

    Scipy has an integration feature that can help you.

    If you want to use the cumulative sum of trapezoids for integration, which would probably be best for a series of points.

    You can do this:

    >>> from scipy import integrate
    >>> x = np.linspace(-2, 2, num=20)
    >>> y = x
    >>> y_int = integrate.cumtrapz(y, x, initial=0)
    >>> plt.plot(x, y_int, 'ro', x, y[0] + 0.5 * x**2, 'b-')
    >>> plt.show()
    

    This will also plot the data and show it to you graphically. This is the integration call integrate.cumtrapz(y, x, initial=0) where x, and y are your two arrays.

    0 讨论(0)
提交回复
热议问题