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/5054#issuecomment-802101178,https://api.github.com/repos/pydata/xarray/issues/5054,802101178,MDEyOklzc3VlQ29tbWVudDgwMjEwMTE3OA==,703554,2021-03-18T16:45:51Z,2021-03-18T16:58:44Z,CONTRIBUTOR,"FWIW my use case actually only needs indexing a single dimension, i.e., something equivalent to the numpy (or dask.array) [compress](https://numpy.org/doc/stable/reference/generated/numpy.compress.html) function. This can be hacked for xarray datasets in a fairly straightforward way:
```python
def _compress_dataarray(a, indexer, dim):
data = a.data
try:
axis = a.dims.index(dim)
except ValueError:
v = data
else:
# rely on __array_function__ to handle dispatching to dask if
# data is a dask array
v = np.compress(indexer, a.data, axis=axis)
if hasattr(v, 'compute_chunk_sizes'):
# needed to know dim lengths
v.compute_chunk_sizes()
return v
def compress_dataset(ds, indexer, dim):
if isinstance(indexer, str):
indexer = ds[indexer].data
coords = dict()
for k in ds.coords:
a = ds[k]
v = _compress_dataarray(a, indexer, dim)
coords[k] = (a.dims, v)
data_vars = dict()
for k in ds.data_vars:
a = ds[k]
v = _compress_dataarray(a, indexer, dim)
data_vars[k] = (a.dims, v)
attrs = ds.attrs.copy()
return xr.Dataset(data_vars=data_vars, coords=coords, attrs=attrs)
```
Given the complexity of fancy indexing in general, I wonder if it's worth contemplating implementing a `Dataset.compress()` method as a first step.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,834972299
https://github.com/pydata/xarray/issues/5054#issuecomment-802096873,https://api.github.com/repos/pydata/xarray/issues/5054,802096873,MDEyOklzc3VlQ29tbWVudDgwMjA5Njg3Mw==,703554,2021-03-18T16:39:59Z,2021-03-18T16:39:59Z,CONTRIBUTOR,Thanks @dcherian.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,834972299