Pint-Xarray

0.6.1 · active · verified Fri Apr 17

pint-xarray provides an interface between Pint (physical units library) and xarray (labeled multi-dimensional arrays). It enables attaching units to `xarray.DataArray` and `xarray.Dataset` objects, performing unit-aware computations, and ensuring dimensional consistency, making scientific data processing more robust. It is currently at version 0.6.1 and sees active development with releases typically tied to feature additions and bug fixes.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to initialize `xarray.DataArray` and `xarray.Dataset` objects with physical units using the `.pint` accessor. It shows how to quantify variables and perform unit conversions, highlighting the core functionality of unit-aware data handling.

import xarray as xr
import pint_xarray # noqa: F401 (registers accessor)
import pint
import numpy as np

# Create a Pint UnitRegistry
ureg = pint.UnitRegistry()

# Create an xarray DataArray with units using the .pint accessor
da = xr.DataArray(
    np.array([10.0, 20.0, 30.0]),
    coords={"x": [0, 1, 2]},
    dims=("x",),
).pint.quantify(unit=ureg.meter)

print("Original DataArray:")
print(da)

# Perform a unit-aware operation: convert units
da_km = da.pint.to("kilometer")
print("\nConverted to kilometers:")
print(da_km)

# Example with a Dataset and multiple variables
ds = xr.Dataset(
    {
        "temperature": ("time", [25.0, 26.0]),
        "pressure": ("time", [1013.25, 1012.00])
    },
    coords={"time": [0, 1]}
).pint.quantify({"temperature": ureg.degC, "pressure": ureg.hPa})

print("\nOriginal Dataset variable 'temperature':")
print(ds["temperature"])

# Convert a Dataset variable's units
temp_kelvin = ds["temperature"].pint.to("kelvin")
print("\nTemperature in Kelvin:")
print(temp_kelvin)

view raw JSON →