html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/2511#issuecomment-992699334,https://api.github.com/repos/pydata/xarray/issues/2511,992699334,IC_kwDOAMm_X847K2PG,2448579,2021-12-13T17:21:20Z,2021-12-13T17:21:20Z,MEMBER,"IIUC this cannot work lazily in most cases if you have dimension coordinate variables. When xarray constructs the output after indexing, it will try to index those coordinate variables so that it can associate the right timestamp (for e.g) with the output. The example from @ulijh should work though (it has no dimension coordinate or indexed variables) ``` python import xarray as xr import dask.array as da import numpy as np da = xr.DataArray(np.random.rand(3*4*5).reshape((3,4,5))).chunk(dict(dim_0=1)) idcs = da.argmax('dim_2') da[dict(dim_2=idcs)] ``` The example by @rafa-guedes (thanks for that one!) could be made to work I think. ``` python import numpy as np import dask.array as da import xarray as xr darr = xr.DataArray(data=[0.2, 0.4, 0.6], coords={""z"": range(3)}, dims=(""z"",)) good_indexer = xr.DataArray( data=np.random.randint(0, 3, 8).reshape(4, 2).astype(int), coords={""y"": range(4), ""x"": range(2)}, dims=(""y"", ""x"") ) bad_indexer = xr.DataArray( data=da.random.randint(0, 3, 8).reshape(4, 2).astype(int), coords={""y"": range(4), ""x"": range(2)}, dims=(""y"", ""x"") ) In [5]: darr Out[5]: array([0.2, 0.4, 0.6]) Coordinates: * z (z) int64 0 1 2 In [6]: good_indexer Out[6]: array([[0, 1], [2, 2], [1, 2], [1, 0]]) Coordinates: * y (y) int64 0 1 2 3 * x (x) int64 0 1 In [7]: bad_indexer Out[7]: dask.array Coordinates: * y (y) int64 0 1 2 3 * x (x) int64 0 1 In [8]: darr[good_indexer] Out[8]: array([[0.2, 0.4], [0.6, 0.6], [0.4, 0.6], [0.4, 0.2]]) Coordinates: z (y, x) int64 0 1 2 2 1 2 1 0 * y (y) int64 0 1 2 3 * x (x) int64 0 1 ``` We can copy the dimension coordinates of the output (x,y) directly from the indexer. And the dimension coordinate on the input (z) should be a dask array in the output (since z is not a dimension coordinate in the output, this should be fine) ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,374025325 https://github.com/pydata/xarray/issues/2511#issuecomment-568107398,https://api.github.com/repos/pydata/xarray/issues/2511,568107398,MDEyOklzc3VlQ29tbWVudDU2ODEwNzM5OA==,2448579,2019-12-20T22:14:34Z,2019-12-20T22:14:34Z,MEMBER,I don't think any one is working on it. We would appreciate it if you could try to fix it.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,374025325