Skip to content

Commit 6920b02

Browse files
committed
Better?
1 parent e911e12 commit 6920b02

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

xarray/backends/zarr.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def __getitem__(self, key):
8383
# Lie about IndexingSupport so that we do
8484
# rewrite negative slices to positive slices
8585
return indexing.explicit_indexing_adapter(
86-
key, array.shape, indexing.IndexingSupport.OUTER, self._oindex
86+
key, array.shape, indexing.IndexingSupport.VECTORIZED, self._oindex
8787
)
8888

8989
# if self.ndim == 0:

xarray/core/indexing.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
NDArrayMixin,
2424
either_dict_or_kwargs,
2525
get_valid_numpy_dtype,
26+
is_scalar,
2627
to_0d_array,
2728
)
2829

@@ -980,12 +981,25 @@ def _decompose_outer_indexer(
980981
[14, 15, 14],
981982
[ 8, 9, 8]])
982983
"""
983-
if indexing_support == IndexingSupport.VECTORIZED:
984-
return indexer, BasicIndexer(())
985-
assert isinstance(indexer, (OuterIndexer, BasicIndexer))
986-
987984
backend_indexer: list[Any] = []
988985
np_indexer = []
986+
987+
assert isinstance(indexer, (OuterIndexer, BasicIndexer))
988+
989+
if indexing_support == IndexingSupport.VECTORIZED:
990+
for k, s in zip(indexer.tuple, shape):
991+
if isinstance(k, slice):
992+
# If it is a slice, then we will slice it as-is
993+
# (but make its step positive) in the backend,
994+
bk_slice, np_slice = _decompose_slice(k, s)
995+
backend_indexer.append(bk_slice)
996+
np_indexer.append(np_slice)
997+
else:
998+
backend_indexer.append(k)
999+
if not is_scalar(k):
1000+
np_indexer.append(slice(None))
1001+
return type(indexer)(tuple(backend_indexer)), BasicIndexer(tuple(np_indexer))
1002+
9891003
# make indexer positive
9901004
pos_indexer: list[np.ndarray | int | np.number] = []
9911005
for k, s in zip(indexer.tuple, shape):

0 commit comments

Comments
 (0)