Description
What is your issue?
After performing a weighted mean with keep_attrs=True
along a specific dimension in a Dataset
, no remaining coordinates have attributes left:
import numpy as np
import xarray as xr
air = xr.tutorial.open_dataset("air_temperature")
air['gw'] = ('lat', np.cos(np.deg2rad(air.lat.data)),
{'long_name':'grid weights'})
air_wm = air.weighted(air.gw).mean('lat', keep_attrs=True)
print('before weighted mean\n',[(c,air[c].attrs) for c in air.coords])
print('\nafter\n',[(c,air_wm[c].attrs) for c in air_wm.coords])
returns
before weighted mean
[('lat', {'standard_name': 'latitude', 'long_name': 'Latitude', 'units': 'degrees_north', 'axis': 'Y'}), ('lon', {'standard_name': 'longitude', 'long_name': 'Longitude', 'units': 'degrees_east', 'axis': 'X'}), ('time', {'standard_name': 'time', 'long_name': 'Time'})]after
[('lon', {}), ('time', {})]
Likewise for a DataArray
:
temp = air.air
temp_wm = temp.weighted(air.gw).mean('lat', keep_attrs=True)
print('before weighted mean\n',[(c,temp[c].attrs) for c in temp.coords])
print('\nafter\n',[(c,temp_wm[c].attrs) for c in temp_wm.coords])
returns
before weighted mean
[('lat', {'standard_name': 'latitude', 'long_name': 'Latitude', 'units': 'degrees_north', 'axis': 'Y'}), ('lon', {'standard_name': 'longitude', 'long_name': 'Longitude', 'units': 'degrees_east', 'axis': 'X'}), ('time', {'standard_name': 'time', 'long_name': 'Time'})]after
[('lon', {}), ('time', {})]
I think this is the first issue regarding this problem. Have not tested any other weighted operations yet.
Output of xr.show_versions():
INSTALLED VERSIONS
commit: None
python: 3.11.9 (main, Apr 19 2024, 11:44:45) [Clang 14.0.6 ]
python-bits: 64
OS: Darwin
OS-release: 23.5.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: nl_NL.UTF-8
LOCALE: ('nl_NL', 'UTF-8')
libhdf5: 1.12.1
libnetcdf: 4.8.1xarray: 2024.7.0
pandas: 2.1.1
numpy: 1.25.2
scipy: 1.11.3
netCDF4: 1.6.2
pydap: None
h5netcdf: 1.2.0
h5py: 3.9.0
zarr: None
cftime: 1.6.2
nc_time_axis: 1.4.1
iris: 3.9.0
bottleneck: 1.3.5
dask: 2024.5.0
distributed: 2024.5.0
matplotlib: 3.8.4
cartopy: 0.22.0
seaborn: None
numbagg: None
fsspec: 2023.9.2
cupy: None
pint: None
sparse: None
flox: None
numpy_groupies: None
setuptools: 72.1.0
pip: 24.0
conda: 24.7.1
pytest: None
mypy: None
IPython: 8.15.0
sphinx: None
/Users/jasperdejong/opt/anaconda3/envs/py311/lib/python3.11/site-packages/_distutils_hack/init.py:32: UserWarning: Setuptools is replacing distutils. Support for replacing an already imported distutils is deprecated. In the future, this condition will fail. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml
warnings.warn(