netCDF + lazy backend: Error when sel is used with slice, reverse arrange
See original GitHub issueWhat happened?
import xarray as xr
data = xr.open_dataset('data_example.nc')
# wrong
a = data.sel(time='1979-1',isobaricInhPa=200).z[:, ::10,::10][:, ::-1,:]
It seem that when use sel() , [: , ::-1 , :] and [: , ::10 , ::10] at the same time will cause the second coord will wrong like this. Why just when use sel and[: , ::10 , ::10][: , ::-1 , :] ,it will goes wrong in axis=2( the data DO NOT correspond to the coordinates) ?
What did you expect to happen?
The data correspond to the coordinates on Latitude.
Minimal Complete Verifiable Example
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
INSTALLED VERSIONS
commit: None python: 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 64 bit (AMD64)] python-bits: 64 OS: Windows OS-release: 10 machine: AMD64 processor: AMD64 Family 25 Mod el 33 Stepping 0, AuthenticAMD byteorder: little LC_ALL: None LANG: en LOCALE: (‘Chinese (Simplified)_China’, ‘936’) libhdf5: 1.12.1 libnetcdf: 4.8.1 xarray: 2022.3.0 pandas: 1.4.2 numpy: 1.22.3 scipy: 1.7.3 netCDF4: 1.5.7 pydap: None h5netcdf: None h5py: None Nio: None zarr: None cftime: 1.6.0 nc_time_axis: None PseudoNetCDF: None rasterio: 1.2.10 cfgrib: 0.9.10.1 iris: None bottleneck: None dask: None distributed: None matplotlib: 3.5.1 cartopy: 0.20.2 seaborn: None numbagg: None fsspec: None cupy: None pint: None sparse: None setuptools: 56.0.0 pip: 22.0.4 conda: None pytest: None IPython: 8.3.0 sphinx: 4.5.0
Issue Analytics
- State:
- Created a year ago
- Comments:12 (2 by maintainers)
First of all, thank you for your help @dcherian @max-sixty . I finally reproduced this problem. I put the
ds.isel(time=[0], isoBaricInhPa=1).z[:, ::10, :][:, ::-1, :]
tods.isel(time=[0], isoBaricInhPa=1).z[:, ::10, ::10][:, ::-1, :]
can make a minimal example.@dcherian thanks a lot for looking into this. @jesieleo thanks for your patience in us finding the bug.