scipy.interpolate.

# NearestNDInterpolator#

class scipy.interpolate.NearestNDInterpolator(x, y, rescale=False, tree_options=None)[source]#

NearestNDInterpolator(x, y).

Nearest-neighbor interpolator in N > 1 dimensions.

Parameters:
x(npoints, ndims) 2-D ndarray of floats

Data point coordinates.

y(npoints, ) 1-D ndarray of float or complex

Data values.

rescaleboolean, optional

Rescale points to unit cube before performing interpolation. This is useful if some of the input dimensions have incommensurable units and differ by many orders of magnitude.

tree_optionsdict, optional

Options passed to the underlying `cKDTree`.

Methods

 `__call__`(*args, **query_options) Evaluate interpolator at given points.

`griddata`

Interpolate unstructured D-D data.

`LinearNDInterpolator`

Piecewise linear interpolator in N dimensions.

`CloughTocher2DInterpolator`

Piecewise cubic, C1 smooth, curvature-minimizing interpolator in 2D.

`interpn`

Interpolation on a regular grid or rectilinear grid.

`RegularGridInterpolator`

Interpolator on a regular or rectilinear grid in arbitrary dimensions (`interpn` wraps this class).

Notes

Uses `scipy.spatial.cKDTree`

Note

For data on a regular grid use `interpn` instead.

Examples

We can interpolate values on a 2D plane:

```>>> from scipy.interpolate import NearestNDInterpolator
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> rng = np.random.default_rng()
>>> x = rng.random(10) - 0.5
>>> y = rng.random(10) - 0.5
>>> z = np.hypot(x, y)
>>> X = np.linspace(min(x), max(x))
>>> Y = np.linspace(min(y), max(y))
>>> X, Y = np.meshgrid(X, Y)  # 2D grid for interpolation
>>> interp = NearestNDInterpolator(list(zip(x, y)), z)
>>> Z = interp(X, Y)