-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
Description
Code Sample, a copy-pastable example if possible
import numpy as np
import xarray as xr
da = xr.DataArray(
np.random.random((3, 4)),
dims=["assets", "year"],
coords={"year": range(2010, 2018, 2)}
)
# Interpolate directly the DataArray
new_da = da.interp(year=[2011, 2015])
new_da.loc[{"year": 2015}] = 42 # WORKS!
print(new_da)
# Interpolate DataArray as part of a Dataset
dset = xr.Dataset({"my_array": da.copy()}).interp(year=[2011, 2015])
new_da = dset.my_array
new_da.loc[{"year": 2015}] = 42 # DOESN'T WORK!
print(new_da)Problem description
Assigning a value to some locations of a DataArray after it has been interpolated raises an IndexError. This does not occur when the DataArray is interpolated independently, only occurs when the DataArray has been interpolated as part of a Dataset.
This problem is not present in xarray<0.12.0
Expected Output
The above example should print new_da in both cases, with the values corresponding to year 2015 replaced by 42. That works in the first case, but fails in the second raising IndexError.
Although I am not sure if it is the cause of this error, I have found that in the first case the array indexes are present and contain [2011, 2015], but they are an empty OrderDict in the second case.
Output of xr.show_versions()
INSTALLED VERSIONS
------------------
commit: None
python: 3.7.1 (default, Nov 6 2018, 18:46:03)
[Clang 10.0.0 (clang-1000.11.45.5)]
python-bits: 64
OS: Darwin
OS-release: 18.2.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: None
LOCALE: en_GB.UTF-8
libhdf5: 1.10.2
libnetcdf: 4.4.1.1
xarray: 0.12.0
pandas: 0.23.4
numpy: 1.15.4
scipy: 1.1.0
netCDF4: 1.4.2
pydap: None
h5netcdf: None
h5py: None
Nio: None
zarr: None
cftime: 1.0.3.4
nc_time_axis: None
PseudonetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: 1.2.1
dask: None
distributed: None
matplotlib: 3.0.2
cartopy: None
seaborn: 0.9.0
setuptools: 40.5.0
pip: 18.1
conda: None
pytest: 4.0.2
IPython: 7.1.1
sphinx: None