Open
Description
What happened?
The coordinates are not copied if you perform deepcopy for xarray.
This issue was fixed before. I don't see it, for example, in xarray 2022.12.0
, but in the latest version the issue is there again.
import xarray as xr
xarr1 = xr.DataArray(
np.zeros([2]),
coords=dict(x=[0.0, 1.0]), # important to use 'float' here! with 'int' it is working fine
dims=("x")
)
print(xarr1.x.data[0]) # 0.0
xarr2 = xarr1.copy(deep=True)
xarr2.x.data[0] = 45
print(xarr1.x.data[0]) # gives 45
Interesting, that if your coordinates are int
, then the issue is gone
What did you expect to happen?
import xarray as xr
xarr1 = xr.DataArray(
np.zeros([2]),
coords=dict(x=[0.0, 1.0]), # important to use 'float' here! with 'int' it is working fine
dims=("x")
)
print(xarr1.x.data[0]) # 0.0
xarr2 = xarr1.copy(deep=True)
xarr2.x.data[0] = 45
print(xarr1.x.data[0]) # I expect it to be 0.0
Minimal Complete Verifiable Example
import xarray as xr
xarr1 = xr.DataArray(
np.zeros([2]),
coords=dict(x=[0.0, 1.0]), # important to use 'float' here! with 'int' it is working fine
dims=("x")
)
print(xarr1.x.data[0]) # 0.0
xarr2 = xarr1.copy(deep=True)
xarr2.x.data[0] = 45
print(xarr1.x.data[0]) # gives 45
MVCE confirmation
- Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
- Complete example — the example is self-contained, including all data and the text of any traceback.
- Verifiable example — the example copy & pastes into an IPython prompt or Binder notebook, returning the result.
- New issue — a search of GitHub Issues suggests this is not a duplicate.
Relevant log output
No response
Anything else we need to know?
No response
Environment
xarray 2023.1.0
python 3.8.10