Skip to content

Commit 8c49aba

Browse files
committed
12k->15k
1 parent 592e2bd commit 8c49aba

File tree

3 files changed

+33
-14
lines changed

3 files changed

+33
-14
lines changed

xarray/core/dataarray.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1503,7 +1503,11 @@ def isel(
15031503
# lists, or zero or one-dimensional np.ndarray's
15041504

15051505
variable = self._variable.isel(indexers, missing_dims=missing_dims)
1506-
indexes, index_variables = isel_indexes(self.xindexes, indexers)
1506+
indexes, index_variables = isel_indexes(
1507+
self._indexes,
1508+
self._coords,
1509+
indexers,
1510+
)
15071511

15081512
coords = {}
15091513
for coord_name, coord_value in self._coords.items():

xarray/core/dataset.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2979,8 +2979,11 @@ def isel(
29792979
dims: dict[Hashable, int] = {}
29802980
coord_names = self._coord_names.copy()
29812981

2982-
indexes, index_variables = isel_indexes(self.xindexes, indexers)
2983-
2982+
indexes, index_variables = isel_indexes(
2983+
self._indexes,
2984+
self.coords,
2985+
indexers,
2986+
)
29842987
for name, var in self._variables.items():
29852988
# preserve variable order
29862989
if name in index_variables:
@@ -3015,7 +3018,11 @@ def _isel_fancy(
30153018
valid_indexers = dict(self._validate_indexers(indexers, missing_dims))
30163019

30173020
variables: dict[Hashable, Variable] = {}
3018-
indexes, index_variables = isel_indexes(self.xindexes, valid_indexers)
3021+
indexes, index_variables = isel_indexes(
3022+
self._indexes,
3023+
self.coords,
3024+
valid_indexers,
3025+
)
30193026

30203027
for name, var in self.variables.items():
30213028
if name in index_variables:
@@ -7828,7 +7835,11 @@ def diff(
78287835
else:
78297836
raise ValueError("The 'label' argument has to be either 'upper' or 'lower'")
78307837

7831-
indexes, index_vars = isel_indexes(self.xindexes, slice_new)
7838+
indexes, index_vars = isel_indexes(
7839+
self._indexes,
7840+
self.coords,
7841+
slice_new
7842+
)
78327843
variables = {}
78337844

78347845
for name, var in self.variables.items():

xarray/core/indexes.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,23 +1775,26 @@ def check_variables():
17751775

17761776

17771777
def _apply_indexes_isel(
1778-
indexes: Indexes[Index],
1778+
indexes: dict[Hashable, Index],
1779+
coords,
17791780
args: Mapping[Any, Any],
17801781
):
17811782
new_indexes: dict[Hashable, Index] = {k: v for k, v in indexes.items()}
17821783
new_index_variables: dict[Hashable, Variable] = {}
1783-
# for index, index_vars in indexes.group_by_index():
1784-
for index in indexes._id_index.values():
1785-
# index = indexes._id_index[i]
1786-
index_dims = (index.index.name,)
1787-
index_args = {k: v for k, v in args.items() if k in index_dims}
1784+
for name, index in indexes.items():
1785+
index_args = {k: v for k, v in args.items() if k == name}
1786+
index_dims = (name,)
1787+
index_vars = {name: coords[name]}
17881788
if index_args:
17891789
new_index = index.isel(index_args)
17901790
if new_index is not None:
17911791
new_indexes.update({k: new_index for k in index_vars})
17921792
new_index_vars = new_index.create_variables(index_vars)
17931793
new_index_variables.update(new_index_vars)
1794-
1794+
new_index_variables.update(new_index_vars)
1795+
else:
1796+
for k in index_vars:
1797+
new_indexes.pop(k, None)
17951798
return new_indexes, new_index_variables
17961799

17971800

@@ -1820,10 +1823,11 @@ def _apply_indexes(
18201823

18211824

18221825
def isel_indexes(
1823-
indexes: Indexes[Index],
1826+
indexes,
1827+
coords,
18241828
indexers: Mapping[Any, Any],
18251829
) -> tuple[dict[Hashable, Index], dict[Hashable, Variable]]:
1826-
return _apply_indexes_isel(indexes, indexers)
1830+
return _apply_indexes_isel(indexes, coords, indexers)
18271831

18281832

18291833
def roll_indexes(

0 commit comments

Comments
 (0)