# Interpolation (`scipy.interpolate`)

There are several general facilities available in SciPy for interpolation and smoothing for data in 1, 2, and higher dimensions. The choice of a specific interpolation routine depends on the data: whether it is one-dimensional, is given on a structured grid, or is unstructured. One other factor is the desired smoothness of the interpolator. In short, routines recommended for interpolation can be summarized as follows:

| kind | routine | continuity | comment
--- | --- | --- | --- | ---
1D | linear | `numpy.interp` | piecewise continuous | comes from numpy
cubic spline | `CubicSpline` | 2nd derivative |
monotone cubic spline | `PchipInterpolator` | 1st derivative | non-overshooting
non-cubic spline | `make_interp_spline` | (k-1)th derivative | `k=3` is equivalent to `CubicSpline`
nearest | `interp1d` |  | kind=’nearest’, ‘previous’, ‘next’
N-D curve | nearest, linear, spline | `make_interp_spline` | (k-1)th derivative | use N-dim y array
N-D regular (rectilinear) grid | nearest | `RegularGridInterpolator` |  | method=’nearest’
linear | method=’linear’
splines | 2nd derivatives | method=’cubic’, ‘quintic’
monotone splines | 1st derivatives | method=’pchip’
N-D scattered | nearest | `NearestNDInterpolator` |  | alias: `griddata`
linear | `LinearNDInterpolator`
cubic (2D only) | `CloughTocher2DInterpolator` | 1st derivatives
radial basis function | `RBFInterpolator` |  |

For data smoothing, functions are provided for 1- and 2-D data using cubic splines, based on the FORTRAN library FITPACK.

Additionally, routines are provided for interpolation / smoothing using radial basis functions with several kernels.

Futher details are given in the links below.

- 1-D interpolation
  - Piecewise linear interpolation
  - Cubic splines
  - Monotone interpolants
  - Interpolation with B-splines
  - Parametric spline curves
  - Legacy interface for 1-D interpolation (`interp1d`)
  - Missing data
- Piecewise polynomials and splines
  - Manipulating `PPoly` objects
  - B-splines: knots and coefficients
    - B-spline basis elements
    - Design matrices in the B-spline basis
- Smoothing splines
  - Spline smoothing in 1-D
    - Procedural (`splrep`)
    - Object-oriented (`UnivariateSpline`)
  - 2-D smoothing splines
    - Bivariate spline fitting of scattered data
    - Bivariate spline fitting of data on a grid
    - Bivariate spline fitting of data in spherical coordinates
- Multivariate data interpolation on a regular grid (`RegularGridInterpolator`)
  - Uniformly spaced data
- Scattered data interpolation (`griddata`)
- Using radial basis functions for smoothing/interpolation
  - 1-D Example
  - 2-D Example
- Extrapolation tips and tricks
  - `interp1d` : replicate `numpy.interp` left and right fill values
  - CubicSpline extend the boundary conditions
  - Manually implement the asymptotics
    - The setup
    - Use the known asymptotics
  - Extrapolation in `D > 1`