File tree 2 files changed +18
-3
lines changed 2 files changed +18
-3
lines changed Original file line number Diff line number Diff line change 18
18
is_duck_dask_array ,
19
19
sparse_array_type ,
20
20
)
21
- from .utils import maybe_cast_to_coords_dtype
21
+ from .utils import is_duck_array , maybe_cast_to_coords_dtype
22
22
23
23
24
24
def expanded_indexer (key , ndim ):
@@ -307,7 +307,7 @@ def __init__(self, key):
307
307
for k in key :
308
308
if isinstance (k , slice ):
309
309
k = as_integer_slice (k )
310
- elif isinstance ( k , np . ndarray ):
310
+ elif is_duck_array ( k ):
311
311
if not np .issubdtype (k .dtype , np .integer ):
312
312
raise TypeError (
313
313
f"invalid indexer array, does not have integer dtype: { k !r} "
@@ -320,7 +320,7 @@ def __init__(self, key):
320
320
"invalid indexer key: ndarray arguments "
321
321
f"have different numbers of dimensions: { ndims } "
322
322
)
323
- k = np . asarray ( k , dtype = np .int64 )
323
+ k = k . astype ( np .int64 )
324
324
else :
325
325
raise TypeError (
326
326
f"unexpected indexer type for { type (self ).__name__ } : { k !r} "
Original file line number Diff line number Diff line change 9
9
10
10
from . import IndexerMaker , ReturnItem , assert_array_equal
11
11
12
+ da = pytest .importorskip ("dask.array" )
13
+
12
14
B = IndexerMaker (indexing .BasicIndexer )
13
15
14
16
@@ -729,3 +731,16 @@ def test_indexing_1d_object_array() -> None:
729
731
expected = DataArray (expected_data )
730
732
731
733
assert [actual .data .item ()] == [expected .data .item ()]
734
+
735
+
736
+ def test_indexing_dask_array ():
737
+ da = DataArray (
738
+ np .ones (10 * 3 * 3 ).reshape ((10 , 3 , 3 )),
739
+ dims = ("time" , "x" , "y" ),
740
+ ).chunk (dict (time = - 1 , x = 1 , y = 1 ))
741
+ da [{"time" : 9 }] = 42
742
+
743
+ idx = da .argmax ("time" )
744
+ actual = da .isel (time = idx )
745
+
746
+ assert np .all (actual == 42 )
You can’t perform that action at this time.
0 commit comments