@@ -90,12 +90,14 @@ def _remap_key(self, key):
90
90
# expand the indexer so we can handle Ellipsis
91
91
labels = indexing .expanded_indexer (key , self .data_array .ndim )
92
92
key = dict (zip (self .data_array .dims , labels ))
93
-
94
93
return indexing .remap_label_indexers (self .data_array , key )
95
94
96
95
def __getitem__ (self , key ):
97
96
pos_indexers , new_indexes = self ._remap_key (key )
98
- return self .data_array [pos_indexers ]._replace_indexes (new_indexes )
97
+ ds = self .data_array [pos_indexers ]._to_temp_dataset ()
98
+ return self .data_array ._from_temp_dataset (
99
+ ds ._replace_indexes (new_indexes )
100
+ )
99
101
100
102
def __setitem__ (self , key , value ):
101
103
pos_indexers , new_indexes = self ._remap_key (key )
@@ -240,16 +242,6 @@ def _replace_maybe_drop_dims(self, variable, name=__default):
240
242
if set (v .dims ) <= allowed_dims )
241
243
return self ._replace (variable , coords , name )
242
244
243
- def _replace_indexes (self , indexes ):
244
- obj = self
245
- for dim , idx in iteritems (indexes ):
246
- if idx .name is None :
247
- idx .name = dim + "_unnamed_level"
248
- obj = obj .rename ({dim : idx .name })
249
- new_coord = Coordinate (idx .name , idx )
250
- obj = obj ._replace (coords = {idx .name : new_coord })
251
- return obj
252
-
253
245
__this_array = _ThisArray ()
254
246
255
247
def _to_temp_dataset (self ):
@@ -605,10 +597,10 @@ def sel(self, method=None, tolerance=None, **indexers):
605
597
Dataset.sel
606
598
DataArray.isel
607
599
"""
608
- pos_indexers , new_indexes = indexing . remap_label_indexers (
609
- self , indexers , method = method , tolerance = tolerance
600
+ ds = self . _to_temp_dataset (). sel (
601
+ method = method , tolerance = tolerance , ** indexers
610
602
)
611
- return self .isel ( ** pos_indexers ). _replace_indexes ( new_indexes )
603
+ return self ._from_temp_dataset ( ds )
612
604
613
605
def isel_points (self , dim = 'points' , ** indexers ):
614
606
"""Return a new DataArray whose dataset is given by pointwise integer
0 commit comments