Skip to content

Keep attributes across operations #2582

Closed
@MBlaschek

Description

@MBlaschek

The Problem

When I have two DataArrays and I use a standard operation ( +, - ,*, /) the attributes vanish. I think that should not be the case. Even when using as suggested the set_options

import numpy as np
import xarray as xr
a = xr.DataArray(np.random.randn(3,3), dims=('x','y'), name='temp', attrs={'units':'K'})
b = xr.DataArray(np.random.randn(3,3), dims=('x','y'), name='temp', attrs={'units':'K'})
print(a)
<xarray.DataArray 'temp' (x: 3, y: 3)>
array([[ 1.207407, -1.9429  ,  3.168454],
       [-0.773912, -0.121835, -0.139538],
       [ 1.823002,  0.185846,  0.53569 ]])
Dimensions without coordinates: x, y
Attributes:
    units:    K
print(a-b)
<xarray.DataArray 'temp' (x: 3, y: 3)>
array([[ 1.280892, -1.097781,  2.150318],
       [-0.208202, -0.03856 ,  0.805856],
       [ 2.192506,  1.049181,  2.277078]])
Dimensions without coordinates: x, y

with xr.set_options(keep_attrs=True):
    print(a-b)

<xarray.DataArray 'temp' (x: 3, y: 3)>
array([[ 1.280892, -1.097781,  2.150318],
       [-0.208202, -0.03856 ,  0.805856],
       [ 2.192506,  1.049181,  2.277078]])
Dimensions without coordinates: x, y

Problem description

Attributes vanish when a normal operation is applied!
From docs of set_options:
keep_attrs: rule for whether to keep attributes on xarray
Datasets/dataarrays after operations. Either True to always keep
attrs, False to always discard them, or 'default' to use original
logic that attrs should only be kept in unambiguous circumstances.
Default: 'default'.

Expected Output

The Attributes should remain. Maybe keep only attributes from the left Array ?
Please adjust or advise me.

Output of xr.show_versions()

`` xr.show_versions() INSTALLED VERSIONS ------------------ commit: None python: 3.6.6.final.0 python-bits: 64 OS: Linux OS-release: 4.15.0-39-generic machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_US.UTF-8 LOCALE: en_US.UTF-8

xarray: 0.11.0
pandas: 0.23.4
numpy: 1.15.4
scipy: 1.1.0
netCDF4: 1.4.2
h5netcdf: None
h5py: 2.8.0
Nio: None
zarr: None
cftime: 1.0.2.1
PseudonetCDF: None
rasterio: None
iris: None
bottleneck: 1.2.1
cyordereddict: None
dask: 0.20.2
distributed: 1.24.2
matplotlib: 3.0.1
cartopy: 0.16.0
seaborn: 0.9.0
setuptools: 40.6.2
pip: 18.1
conda: 4.5.11
pytest: 4.0.0
IPython: 7.1.1
sphinx: 1.8.2
``

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions