-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
Description
While working on #1260 I came upon this which looks like a bug in caching:
import numpy as np
import xarray as xr
from xarray.core import indexing
nx, ny = 8, 10
data = np.arange(nx*ny).reshape(ny, nx)
cached = indexing.MemoryCachedArray(data)
data = xr.DataArray(data=data, dims=('y', 'x'))
cached = xr.DataArray(data=cached, dims=('y', 'x'))
a = data.isel(x=[2, 4], y=[3, 5])
b = cached.isel(x=[2, 4], y=[3, 5])
The last line raises:
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-13-45cd1493cf6b> in <module>()
11
12 a = data.isel(x=[2, 4], y=[3, 5])
---> 13 b = cached.isel(x=[2, 4], y=[3, 5])
/home/mowglie/Documents/git/xarray/xarray/core/dataarray.py in isel(self, drop, **indexers)
668 DataArray.sel
669 """
--> 670 ds = self._to_temp_dataset().isel(drop=drop, **indexers)
671 return self._from_temp_dataset(ds)
672
/home/mowglie/Documents/git/xarray/xarray/core/dataset.py in isel(self, drop, **indexers)
1141 for name, var in iteritems(self._variables):
1142 var_indexers = dict((k, v) for k, v in indexers if k in var.dims)
-> 1143 new_var = var.isel(**var_indexers)
1144 if not (drop and name in var_indexers):
1145 variables[name] = new_var
/home/mowglie/Documents/git/xarray/xarray/core/variable.py in isel(self, **indexers)
547 if dim in indexers:
548 key[i] = indexers[dim]
--> 549 return self[tuple(key)]
550
551 def squeeze(self, dim=None):
/home/mowglie/Documents/git/xarray/xarray/core/variable.py in __getitem__(self, key)
380 # orthogonal indexing should ensure the dimensionality is consistent
381 if hasattr(values, 'ndim'):
--> 382 assert values.ndim == len(dims), (values.ndim, len(dims))
383 else:
384 assert len(dims) == 0, len(dims)
AssertionError: (1, 2)