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/2710#issuecomment-588141090,https://api.github.com/repos/pydata/xarray/issues/2710,588141090,MDEyOklzc3VlQ29tbWVudDU4ODE0MTA5MA==,35968931,2020-02-19T10:09:26Z,2020-02-19T10:09:26Z,MEMBER,@pletchm was this issue closed by #2757?,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,403326458 https://github.com/pydata/xarray/issues/2710#issuecomment-485541551,https://api.github.com/repos/pydata/xarray/issues/2710,485541551,MDEyOklzc3VlQ29tbWVudDQ4NTU0MTU1MQ==,2448579,2019-04-22T20:29:47Z,2019-04-22T20:29:57Z,MEMBER,"Another solution could be adding support for `da.sel(dim1='a', squeeze=False)` to avoid losing the `dim1` dimension/coordinate in the first place","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,403326458 https://github.com/pydata/xarray/issues/2710#issuecomment-485540381,https://api.github.com/repos/pydata/xarray/issues/2710,485540381,MDEyOklzc3VlQ29tbWVudDQ4NTU0MDM4MQ==,1217238,2019-04-22T20:26:03Z,2019-04-22T20:27:27Z,MEMBER,"@barkls I think `da.expand_dims(list(da.coords))` should work for this use-case. Previously, we only used the argument to `expand_dims()` as a sequence, but now we distinguish between mappings and other sequences. I don't know what the best resolution would be here, but this seems to be a hazard of duck-typing. I did not anticipate that some users would already be iterating over mappings like `.coords`. ","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,403326458 https://github.com/pydata/xarray/issues/2710#issuecomment-458745457,https://api.github.com/repos/pydata/xarray/issues/2710,458745457,MDEyOklzc3VlQ29tbWVudDQ1ODc0NTQ1Nw==,1217238,2019-01-29T23:13:33Z,2019-01-29T23:13:33Z,MEMBER,"> Would it be alright if I opened a PR sometime soon that upgraded `expand_dims` to support the inserting/broadcasting dimensions with size > 1 (the first feature)? Yes, that sounds welcome to me! I think much of the underlying logic should already exist on the `Variable.set_dims()` method. See also the `either_dict_or_kwargs` utility in `xarray.core.utils`.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,403326458 https://github.com/pydata/xarray/issues/2710#issuecomment-458718342,https://api.github.com/repos/pydata/xarray/issues/2710,458718342,MDEyOklzc3VlQ29tbWVudDQ1ODcxODM0Mg==,2448579,2019-01-29T21:42:08Z,2019-01-29T21:42:08Z,MEMBER,"Well then I think they should be different. Currently, `da.expand_dims('a')` gives ``` array([[[1., 1., 1.], [1., 1., 1.], [1., 1., 1.], [1., 1., 1.], [1., 1., 1.]]]) Coordinates: * b (b) int64 0 1 2 3 4 * c (c) int64 0 1 2 Dimensions without coordinates: a ``` `da.expand_dims(a=3)` should give ``` ... Coordinates: * b (b) int64 0 1 2 3 4 * c (c) int64 0 1 2 Dimensions without coordinates: a ``` `da.expand_dims(a=[9, 10, 11])` should give ``` ... Coordinates: * a (a) int64 9 10 11 * b (b) int64 0 1 2 3 4 * c (c) int64 0 1 2 ``` i.e. in this last case, the user has specified co-ordinate labels and so the returned DataArray has a new co-ordinate a.","{""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,403326458 https://github.com/pydata/xarray/issues/2710#issuecomment-458629817,https://api.github.com/repos/pydata/xarray/issues/2710,458629817,MDEyOklzc3VlQ29tbWVudDQ1ODYyOTgxNw==,2448579,2019-01-29T17:25:26Z,2019-01-29T17:25:26Z,MEMBER,"`da.expand_dims(a=3)` should not be equivalent to `da.expand_dims(a=[0, 1, 2])` because the latter will also create a co-ordinate `a`. Am I understanding this right?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,403326458 https://github.com/pydata/xarray/issues/2710#issuecomment-457799138,https://api.github.com/repos/pydata/xarray/issues/2710,457799138,MDEyOklzc3VlQ29tbWVudDQ1Nzc5OTEzOA==,1217238,2019-01-26T03:55:39Z,2019-01-26T03:55:39Z,MEMBER,"> broadcast the data across 1 or more new dimensions Yes, this feels in scope for `expand_dims()`. But I think there are two separate features here: 1. Support inserting/broadcasting dimensions with size > 1. 2. Specify the size of the new dimension implicitly, by providing coordinate labels. I think we would want both to be supported -- you should not be required to supply coordinate labels in order to expand to a dimension of size > 1. We can imagine the first being spelled like `da.expand_dims({'a': 3})` or `da.expand_dims(a=3)`. > expand an existing dimension to include 1 or more new coordinates This feels a little different from `expand_dims` to me. Here the fundamental operation is alignment/reindexing, not broadcasting across a new dimension. The result also looks different, because you get all the NaN values. I would probably write this with `reindex`, e.g., ``` In [12]: da.reindex(b=list(da.b.values)+[5, 6]) Out[12]: array([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.], [nan, nan, nan], [nan, nan, nan]]) Coordinates: * b (b) int64 0 1 2 3 4 5 6 * c (c) int64 0 1 2 ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,403326458