bundles / scipy 2.0.0.dev0+git20260907.41eeb59 / scipy / interpolate / _cubic / Akima1DInterpolator
class
scipy.interpolate._cubic:Akima1DInterpolator
source: build-install/usr/lib/python3.14/site-packages/scipy/interpolate/_cubic.py:416
Signature
class Akima1DInterpolator(x, y, axis = 0, *, method: Literal['akima', 'makima'] = akima, extrapolate: bool | None = None)Members
Summary
Akima "visually pleasing" interpolator (C1 smooth).
Extended Summary
Fit piecewise cubic polynomials, given vectors x and y. The interpolation method by Akima uses a continuously differentiable sub-spline built from piecewise cubic polynomials. The resultant curve passes through the given data points and will appear smooth and natural.
Parameters
x: ndarray, shape (npoints, )1-D array of monotonically increasing real values.
y: ndarray, shape (..., npoints, ...)N-D array of real values. The length of
yalong the interpolation axis must be equal to the length ofx. Use theaxisparameter to select the interpolation axis.axis: int, optionalAxis in the
yarray corresponding to the x-coordinate values. Defaults toaxis=0.method: {'akima', 'makima'}, optionalIf
"makima", use the modified Akima interpolation [2]. Defaults to"akima", use the Akima interpolation [1].extrapolate: {bool, 'periodic', None}, optionalIf bool, determines whether to extrapolate to out-of-bounds points based on first and last intervals, or to return NaNs. If 'periodic', periodic extrapolation is used. If None (default), it is set to False. See tutorial-interpolate_out_of_bounds.
Methods
__call__derivativeantiderivativeintegratesolveroots
Notes
Use only for precise data, as the fitted curve passes through the given points exactly. This routine is useful for plotting a pleasingly smooth curve through a few given points for purposes of plotting.
Let be the slopes of the interval . Akima's derivative at is defined as:
In the Akima interpolation [1] (method="akima"), the weights are:
In the modified Akima interpolation [2] (method="makima"), to eliminate overshoot and avoid edge cases of both numerator and denominator being equal to 0, the weights are modified as follows:
Examples
Comparison of ``method="akima"`` and ``method="makima"``:import numpy as np from scipy.interpolate import Akima1DInterpolator import matplotlib.pyplot as plt x = np.linspace(1, 7, 7) y = np.array([-1, -1, -1, 0, 1, 1, 1]) xs = np.linspace(min(x), max(x), num=100) y_akima = Akima1DInterpolator(x, y, method="akima")(xs) y_makima = Akima1DInterpolator(x, y, method="makima")(xs)✓
fig, ax = plt.subplots()
✓ax.plot(x, y, "o", label="data") ax.plot(xs, y_akima, label="akima") ax.plot(xs, y_makima, label="makima") ax.legend()✗
<matplotlib.legend.Legend object at 0x7f3f601c0c20>
fig.show()
✓See also
- CubicSpline
Cubic spline data interpolator.
- PPoly
Piecewise polynomial in terms of coefficients and breakpoints
- PchipInterpolator
PCHIP 1-D monotonic cubic interpolator.
Aliases
scipy.interpolate.Akima1DInterpolator