numpy.trapezoid#

numpy.trapezoid(y,x=None,dx=1.0,axis=-1)[source]#

Integrate along the given axis using the composite trapezoidal rule.

Ifx is provided, the integration happens in sequence along itselements - they are not sorted.

Integratey (x) along each 1d slice on the given axis, compute\(\int y(x) dx\).Whenx is specified, this integrates along the parametric curve,computing\(\int_t y(t) dt =\int_t y(t) \left.\frac{dx}{dt}\right|_{x=x(t)} dt\).

New in version 2.0.0.

Parameters:
yarray_like

Input array to integrate.

xarray_like, optional

The sample points corresponding to they values. Ifx is None,the sample points are assumed to be evenly spaceddx apart. Thedefault is None.

dxscalar, optional

The spacing between sample points whenx is None. The default is 1.

axisint, optional

The axis along which to integrate.

Returns:
trapezoidfloat or ndarray

Definite integral ofy = n-dimensional array as approximated alonga single axis by the trapezoidal rule. Ify is a 1-dimensional array,then the result is a float. Ifn is greater than 1, then the resultis ann-1 dimensional array.

See also

sum,cumsum

Notes

Image[2] illustrates trapezoidal rule – y-axis locations of pointswill be taken fromy array, by default x-axis distances betweenpoints will be 1.0, alternatively they can be provided withx arrayor withdx scalar. Return value will be equal to combined area underthe red lines.

References

Examples

>>>importnumpyasnp

Use the trapezoidal rule on evenly spaced points:

>>>np.trapezoid([1,2,3])4.0

The spacing between sample points can be selected by either thex ordx arguments:

>>>np.trapezoid([1,2,3],x=[4,6,8])8.0>>>np.trapezoid([1,2,3],dx=2)8.0

Using a decreasingx corresponds to integrating in reverse:

>>>np.trapezoid([1,2,3],x=[8,6,4])-8.0

More generallyx is used to integrate along a parametric curve. We canestimate the integral\(\int_0^1 x^2 = 1/3\) using:

>>>x=np.linspace(0,1,num=50)>>>y=x**2>>>np.trapezoid(y,x)0.33340274885464394

Or estimate the area of a circle, noting we repeat the sample which closesthe curve:

>>>theta=np.linspace(0,2*np.pi,num=1000,endpoint=True)>>>np.trapezoid(np.cos(theta),x=np.sin(theta))3.141571941375841

np.trapezoid can be applied along a specified axis to do multiplecomputations in one call:

>>>a=np.arange(6).reshape(2,3)>>>aarray([[0, 1, 2],       [3, 4, 5]])>>>np.trapezoid(a,axis=0)array([1.5, 2.5, 3.5])>>>np.trapezoid(a,axis=1)array([2.,  8.])
On this page