Physical units interface to xarray using Pint
Project Links
Meta
Author: Tom Nicholas
Requires Python: >=3.11
Classifiers
Development Status
- 3 - Alpha
Environment
- Console
Intended Audience
- Science/Research
Operating System
- OS Independent
Programming Language
- Python
- Python :: 3.11
- Python :: 3.12
- Python :: 3.13
- Python :: 3.14
Topic
- Scientific/Engineering
pint-xarray
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
0.6.1
Mar 23, 2026
0.6.0
Aug 31, 2025
0.5.1
Aug 09, 2025
0.5.0
Jun 09, 2025
0.5a0
May 12, 2025
0.4
Jun 23, 2024
0.3
Jul 27, 2022
0.2.1
Jul 26, 2021
0.2
May 09, 2021
0.1
Oct 26, 2020