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/4197#issuecomment-654015589,https://api.github.com/repos/pydata/xarray/issues/4197,654015589,MDEyOklzc3VlQ29tbWVudDY1NDAxNTU4OQ==,13906519,2020-07-06T05:02:48Z,2020-07-07T13:24:29Z,NONE,"Ok, so for now I roll with this: ```python def shrink_dataarray(da, dims=None): """"""remove nodata borders from spatial dims of dataarray"""""" dims = set(dims) if dims else set(da.dims) if len(dims) != 2: raise IndexError # non-spatial dims (carry over, only shrink spatial dims) nsd = set(da.dims) - dims nsd_indexers = {d: range(len(da[d])) for d in nsd} indexers = {d: (da.count(dim=dims - set([d])|nsd).cumsum() != 0) * (da.count(dim=dims - set([d])|nsd)[::-1].cumsum()[::-1] != 0) for d in dims} indexers.update(nsd_indexers) return da.isel(**indexers) ``` Is it possible to identify non-spatial dims with plain xarray dataarrays (non cf-xarray)? And is there maybe a way to detect unlimited dims (usually the time dim)?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,650549352 https://github.com/pydata/xarray/issues/4197#issuecomment-653753668,https://api.github.com/repos/pydata/xarray/issues/4197,653753668,MDEyOklzc3VlQ29tbWVudDY1Mzc1MzY2OA==,13906519,2020-07-04T11:22:42Z,2020-07-04T11:22:42Z,NONE,"@fujiisoup Thanks, that’s great and much cleaner than my previous numpy code. I’ll run with that and maybe try to pack that in a general function. Not sure is this a common enough problem to have in xarray itself?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,650549352 https://github.com/pydata/xarray/issues/4197#issuecomment-653748350,https://api.github.com/repos/pydata/xarray/issues/4197,653748350,MDEyOklzc3VlQ29tbWVudDY1Mzc0ODM1MA==,13906519,2020-07-04T10:20:56Z,2020-07-04T10:37:29Z,NONE,"@keewis @fujiisoup @shoyer thanks. this does indeed not work for my used case if there's a all-nan stretch between parts of the array (think UK and the channel and the northern coast of France) - I simply want to get rid of extra space around a geographic domain (i.e. the nan edges) ``` data = np.array([ [np.nan, np.nan, np.nan, np.nan], [np.nan, 0, 2, np.nan], [np.nan, np.nan, np.nan, np.nan], [np.nan, 2, 0, np.nan], [np.nan, np.nan, np.nan, np.nan], ]) da = xr.DataArray(data, dims=(""x"", ""y"")) # this also results in a 2x2 array, but should be 3x2 ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,650549352