A convenience wrapper for using pint with xarray.
Usage
To convert the variables of a Dataset to quantities:
In [1]: import pint_xarray ...: import xarray as xr In [2]: ds = xr.Dataset({"a": ("x", [0, 1, 2]), "b": ("y", [-3, 5, 1], {"units": "m"})}) ...: ds Out[2]: <xarray.Dataset> Dimensions: (x: 3, y: 3) Dimensions without coordinates: x, y Data variables: a (x) int64 0 1 2 b (y) int64 -3 5 1 In [3]: q = ds.pint.quantify(a="s") ...: q Out[3]: <xarray.Dataset> Dimensions: (x: 3, y: 3) Dimensions without coordinates: x, y Data variables: a (x) int64 [s] 0 1 2 b (y) int64 [m] -3 5 1
to convert to different units:
In [4]: c = q.pint.to({"a": "ms", "b": "km"}) ...: c Out[4]: <xarray.Dataset> Dimensions: (x: 3, y: 3) Dimensions without coordinates: x, y Data variables: a (x) float64 [ms] 0.0 1e+03 2e+03 b (y) float64 [km] -0.003 0.005 0.001
to convert back to non-quantities:
In [5]: d = c.pint.dequantify() ...: d Out[5]: <xarray.Dataset> Dimensions: (x: 3, y: 3) Dimensions without coordinates: x, y Data variables: a (x) float64 0.0 1e+03 2e+03 b (y) float64 -0.003 0.005 0.001
For more, see the documentation