scipy.interpolate.RegularGridInterpolator.__call__#

RegularGridInterpolator.__call__(xi, method=None, *, nu=None)[source]#

Interpolation at coordinates.

Parameters:
xindarray of shape (…, ndim)

The coordinates to evaluate the interpolator at.

methodstr, optional

The method of interpolation to perform. Supported are “linear”, “nearest”, “slinear”, “cubic”, “quintic” and “pchip”. Default is the method chosen when the interpolator was created.

nusequence of ints, length ndim, optional

If not None, the orders of the derivatives to evaluate. Each entry must be non-negative. Only allowed for methods “slinear”, “cubic” and “quintic”.

New in version 1.13.

Returns:
values_xndarray, shape xi.shape[:-1] + values.shape[ndim:]

Interpolated values at xi. See notes for behaviour when xi.ndim == 1.

Notes

In the case that xi.ndim == 1 a new axis is inserted into the 0 position of the returned array, values_x, so its shape is instead (1,) + values.shape[ndim:].

Examples

Here we define a nearest-neighbor interpolator of a simple function

>>> import numpy as np
>>> x, y = np.array([0, 1, 2]), np.array([1, 3, 7])
>>> def f(x, y):
...     return x**2 + y**2
>>> data = f(*np.meshgrid(x, y, indexing='ij', sparse=True))
>>> from scipy.interpolate import RegularGridInterpolator
>>> interp = RegularGridInterpolator((x, y), data, method='nearest')

By construction, the interpolator uses the nearest-neighbor interpolation

>>> interp([[1.5, 1.3], [0.3, 4.5]])
array([2., 9.])

We can however evaluate the linear interpolant by overriding the method parameter

>>> interp([[1.5, 1.3], [0.3, 4.5]], method='linear')
array([ 4.7, 24.3])