class scipy.interpolate.PchipInterpolator(x, y, axis=0, extrapolate=None)[source]

PCHIP 1-d monotonic cubic interpolation

x and y are arrays of values used to approximate some function f, with y = f(x). The interpolant uses monotonic cubic splines to find the value of new points. (PCHIP stands for Piecewise Cubic Hermite Interpolating Polynomial).


x : ndarray

A 1-D array of monotonically increasing real values. x cannot include duplicate values (otherwise f is overspecified)

y : ndarray

A 1-D array of real values. y‘s length along the interpolation axis must be equal to the length of x. If N-D array, use axis parameter to select correct axis.

axis : int, optional

Axis in the y array corresponding to the x-coordinate values.

extrapolate : bool, optional

Whether to extrapolate to ouf-of-bounds points based on first and last intervals, or to return NaNs.


The first derivatives are guaranteed to be continuous, but the second derivatives may jump at x_k.

Preserves monotonicity in the interpolation data and does not overshoot if the data is not smooth.

Determines the derivatives at the points x_k, d_k, by using PCHIP algorithm:

Let m_k be the slope of the kth segment (between k and k+1) If m_k=0 or m_{k-1}=0 or sgn(m_k) != sgn(m_{k-1}) then d_k == 0 else use weighted harmonic mean:

w_1 = 2h_k + h_{k-1}, w_2 = h_k + 2h_{k-1} 1/d_k = 1/(w_1 + w_2)*(w_1 / m_k + w_2 / m_{k-1})

where h_k is the spacing between x_k and x_{k+1}.


__call__(x[, nu, extrapolate]) Evaluate the piecewise polynomial or its derivative :Parameters: x : array_like Points to evaluate the interpolant at.
derivative([nu]) Construct a new piecewise polynomial representing the derivative.
antiderivative([nu]) Construct a new piecewise polynomial representing the antiderivative.