harmonica.filters.unpad

Contents

harmonica.filters.unpad#

harmonica.filters.unpad(da, pad_width=None, **pad_width_kwargs)[source]#

Unpad an array and its coordinates.

Undo the padding process of the harmonica.filters.pad function by slicing the passed xarray.DataArray and its coordinates.

Parameters:
daxarray.DataArray

Padded array. The coordinates along which the array will be padded must be evenly spaced.

Returns:
da_unpadedxarray.DataArray

Unpadded array.

pad_widthmapping of hashable to tuple of int (optional)

Mapping with the form of {dim: (pad_before, pad_after)} describing the number of values padded along each dimension. {dim: pad} is a shortcut for pad_before = pad_after = pad. If None, then the pad_width for each coordinate is read from their pad_width attribute.

**pad_width_kwargs (optional)

The keyword arguments form of pad_width. Pass pad_width or pad_width_kwargs.

Examples

>>> import xarray as xr
>>> import pytest
>>> from packaging.version import Version
>>> if Version(xr.__version__) < Version("2025.10.1"):
...     pytest.skip("This doctest works only in Xarray >= 2025.10.1")
>>> da = xr.DataArray(
...     [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
...     coords={"x": [0, 1, 2], "y": [-5, -4, -3]},
...     dims=("y", "x"),
... )
>>> da_padded = pad(da, x=2, y=1)
>>> da_padded
<xarray.DataArray (y: 5, x: 7)> Size: 280B
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 2, 3, 0, 0],
       [0, 0, 4, 5, 6, 0, 0],
       [0, 0, 7, 8, 9, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])
Coordinates:
  * y        (y) int64 40B -6 -5 -4 -3 -2
  * x        (x) int64 56B -2 -1 0 1 2 3 4
>>> unpad(da_padded)
<xarray.DataArray (y: 3, x: 3)> Size: 72B
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
Coordinates:
  * y        (y) int64 24B -5 -4 -3
  * x        (x) int64 24B 0 1 2

Custom pad_width

>>> unpad(da_padded, x=1, y=1)
<xarray.DataArray (y: 3, x: 5)> Size: 120B
array([[0, 1, 2, 3, 0],
       [0, 4, 5, 6, 0],
       [0, 7, 8, 9, 0]])
Coordinates:
  * y        (y) int64 24B -5 -4 -3
  * x        (x) int64 40B -1 0 1 2 3