classscipy.interpolate.UnivariateSpline(x, y, w=None, bbox=[None,None], k=3, s=None, ext=0, check_finite=False)[source]#
1-D smoothing spline fit to a given set of data points.
Legacy
This class is considered legacy and will no longer receive updates. While we currently have no plans to remove it, we recommend that new code uses more modern alternatives instead. Specifically, we recommend using make_splrep instead.
Fits a spline y = spl(x) of degree k to the provided x, y data. s
specifies the number of knots by specifying a smoothing condition.
Parameters:
x(N,) array_like
1-D array of independent input data. Must be increasing;
must be strictly increasing if s is 0.
y(N,) array_like
1-D array of dependent input data, of the same length as x.
w(N,) array_like, optional
Weights for spline fitting. Must be positive. If w is None,
weights are all 1. Default is None.
bbox(2,) array_like, optional
2-sequence specifying the boundary of the approximation interval. If
bbox is None, bbox=[x[0],x[-1]]. Default is None.
kint, optional
Degree of the smoothing spline. Must be 1 <= k <= 5.
k=3 is a cubic spline. Default is 3.
sfloat or None, optional
Positive smoothing factor used to choose the number of knots. Number
of knots will be increased until the smoothing condition is satisfied:
sum((w[i]*(y[i]-spl(x[i])))**2,axis=0)<=s
However, because of numerical issues, the actual condition is:
If s is None, s will be set as len(w) for a smoothing spline
that uses all data points.
If 0, spline will interpolate through all data points. This is
equivalent to InterpolatedUnivariateSpline.
Default is None.
The user can use the s to control the tradeoff between closeness
and smoothness of fit. Larger s means more smoothing while smaller
values of s indicate less smoothing.
Recommended values of s depend on the weights, w. If the weights
represent the inverse of the standard-deviation of y, then a good
s value should be found in the range (m-sqrt(2*m),m+sqrt(2*m))
where m is the number of datapoints in x, y, and w. This means
s=len(w) should be a good value if 1/w[i] is an
estimate of the standard deviation of y[i].
extint or str, optional
Controls the extrapolation mode for elements
not in the interval defined by the knot sequence.
if ext=0 or ‘extrapolate’, return the extrapolated value.
if ext=1 or ‘zeros’, return 0
if ext=2 or ‘raise’, raise a ValueError
if ext=3 or ‘const’, return the boundary value.
Default is 0.
check_finitebool, optional
Whether to check that the input arrays contain only finite numbers.
Disabling may give a performance gain, but may result in problems
(crashes, non-termination or non-sensical results) if the inputs
do contain infinities or NaNs.
Default is False.
a function to evaluate all derivatives of a B-spline
Notes
The number of data points must be larger than the spline degree k.
NaN handling: If the input arrays contain nan values, the result
is not useful, since the underlying spline fitting routines cannot deal
with nan. A workaround is to use zero weights for not-a-number
data points:
P. Dierckx, "An algorithm for smoothing, differentiation and
integration of experimental data using spline functions",
J.Comp.Appl.Maths 1 (1975) 165-184.