xarray.Dataset.interp

xarray.Dataset.interp

Dataset.interp(coords=None, method='linear', assume_sorted=False, kwargs=None, method_non_numeric='nearest', **coords_kwargs)[source]

Multidimensional interpolation of Dataset.

Parameters
  • coords (dict, optional) – Mapping from dimension names to the new coordinates. New coordinate can be a scalar, array-like or DataArray. If DataArrays are passed as new coordinates, their dimensions are used for the broadcasting. Missing values are skipped.

  • method (str, optional) – {“linear”, “nearest”} for multidimensional array, {“linear”, “nearest”, “zero”, “slinear”, “quadratic”, “cubic”} for 1-dimensional array. “linear” is used by default.

  • assume_sorted (bool, optional) – If False, values of coordinates that are interpolated over can be in any order and they are sorted first. If True, interpolated coordinates are assumed to be an array of monotonically increasing values.

  • kwargs (dict, optional) – Additional keyword arguments passed to scipy’s interpolator. Valid options and their behavior depend on if 1-dimensional or multi-dimensional interpolation is used.

  • method_non_numeric ({"nearest", "pad", "ffill", "backfill", "bfill"}, optional) – Method for non-numeric types. Passed on to Dataset.reindex(). "nearest" is used by default.

  • **coords_kwargs ({dim: coordinate, ...}, optional) – The keyword arguments form of coords. One of coords or coords_kwargs must be provided.

Returns

interpolated (Dataset) – New dataset on the new coordinates.

Notes

scipy is required.

Examples

>>> ds = xr.Dataset(
...     data_vars={
...         "a": ("x", [5, 7, 4]),
...         "b": (
...             ("x", "y"),
...             [[1, 4, 2, 9], [2, 7, 6, np.nan], [6, np.nan, 5, 8]],
...         ),
...     },
...     coords={"x": [0, 1, 2], "y": [10, 12, 14, 16]},
... )
>>> ds
<xarray.Dataset>
Dimensions:  (x: 3, y: 4)
Coordinates:
  * x        (x) int64 0 1 2
  * y        (y) int64 10 12 14 16
Data variables:
    a        (x) int64 5 7 4
    b        (x, y) float64 1.0 4.0 2.0 9.0 2.0 7.0 6.0 nan 6.0 nan 5.0 8.0

1D interpolation with the default method (linear):

>>> ds.interp(x=[0, 0.75, 1.25, 1.75])
<xarray.Dataset>
Dimensions:  (x: 4, y: 4)
Coordinates:
  * y        (y) int64 10 12 14 16
  * x        (x) float64 0.0 0.75 1.25 1.75
Data variables:
    a        (x) float64 5.0 6.5 6.25 4.75
    b        (x, y) float64 1.0 4.0 2.0 nan 1.75 6.25 ... nan 5.0 nan 5.25 nan

1D interpolation with a different method:

>>> ds.interp(x=[0, 0.75, 1.25, 1.75], method="nearest")
<xarray.Dataset>
Dimensions:  (x: 4, y: 4)
Coordinates:
  * y        (y) int64 10 12 14 16
  * x        (x) float64 0.0 0.75 1.25 1.75
Data variables:
    a        (x) float64 5.0 7.0 7.0 4.0
    b        (x, y) float64 1.0 4.0 2.0 9.0 2.0 7.0 ... 6.0 nan 6.0 nan 5.0 8.0

1D extrapolation:

>>> ds.interp(
...     x=[1, 1.5, 2.5, 3.5],
...     method="linear",
...     kwargs={"fill_value": "extrapolate"},
... )
<xarray.Dataset>
Dimensions:  (x: 4, y: 4)
Coordinates:
  * y        (y) int64 10 12 14 16
  * x        (x) float64 1.0 1.5 2.5 3.5
Data variables:
    a        (x) float64 7.0 5.5 2.5 -0.5
    b        (x, y) float64 2.0 7.0 6.0 nan 4.0 nan ... 4.5 nan 12.0 nan 3.5 nan

2D interpolation:

>>> ds.interp(x=[0, 0.75, 1.25, 1.75], y=[11, 13, 15], method="linear")
<xarray.Dataset>
Dimensions:  (x: 4, y: 3)
Coordinates:
  * x        (x) float64 0.0 0.75 1.25 1.75
  * y        (y) int64 11 13 15
Data variables:
    a        (x) float64 5.0 6.5 6.25 4.75
    b        (x, y) float64 2.5 3.0 nan 4.0 5.625 nan nan nan nan nan nan nan