Skip to content

Latest commit

 

History

History
51 lines (35 loc) · 1.38 KB

duck-arrays-integration.rst

File metadata and controls

51 lines (35 loc) · 1.38 KB

Integrating with duck arrays

Warning

This is a experimental feature.

xarray can wrap custom duck array objects as long as they define numpy's shape, dtype and ndim properties and the __array__, __array_ufunc__ and __array_function__ methods.

In certain situations (e.g. when printing the collapsed preview of variables of a Dataset), xarray will display the repr of a duck array in a single line, truncating it to a certain number of characters. If that would drop too much information, the duck array may define a _repr_inline_ method that takes max_width (number of characters) as an argument:

class MyDuckArray:
    ...

    def _repr_inline_(self, max_width):
        """format to a single line with at most max_width characters"""
        ...

    ...

To avoid duplicated information, this method must omit information about the shape and dtype. For example, the string representation of a dask array or a sparse matrix would be:

python

import dask.array as da import xarray as xr import sparse

a = da.linspace(0, 1, 20, chunks=2) a

b = np.eye(10) b[[5, 7, 3, 0], [6, 8, 2, 9]] = 2 b = sparse.COO.from_numpy(b) b

xr.Dataset({"a": ("x", a), "b": (("y", "z"), b)})