issues: 121569683
This data as json
| id | node_id | number | title | user | state | locked | assignee | milestone | comments | created_at | updated_at | closed_at | author_association | active_lock_reason | draft | pull_request | body | reactions | performed_via_github_app | state_reason | repo | type |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 121569683 | MDU6SXNzdWUxMjE1Njk2ODM= | 674 | Should Dataset constructor align DataArrays based on coords? | 5635139 | closed | 0 | 8 | 2015-12-10T20:24:00Z | 2018-05-31T00:22:59Z | 2018-05-31T00:22:59Z | MEMBER | We have a DataArray unaligned to ``` python In [12]: coords={'a': range(4), 'b': range(3)} da = xray.DataArray(np.random.rand(4,3), coords=coords) da Out[12]: <xray.DataArray (a: 4, b: 3)> array([[ 0.05126985, 0.95460352, 0.12853847], [ 0.20577943, 0.80265117, 0.46370886], [ 0.0226791 , 0.33068145, 0.55748573], [ 0.15943175, 0.20183347, 0.46907727]]) Coordinates: * a (a) int64 0 1 2 3 * b (b) int64 0 1 2 In [13]: da_reindex = da.reindex(b=[1,2,0]) da_reindex Out[13]: <xray.DataArray (a: 4, b: 3)> array([[ 0.95460352, 0.12853847, 0.05126985], [ 0.80265117, 0.46370886, 0.20577943], [ 0.33068145, 0.55748573, 0.0226791 ], [ 0.20183347, 0.46907727, 0.15943175]]) Coordinates: * a (a) int64 0 1 2 3 * b (b) int64 1 2 0 ``` If we add this to Dataset and supply ``` python In [16]: : ds = xray.Dataset(variables={'da':da_reindex}, coords=coords) ds ValueError Traceback (most recent call last) <ipython-input-16-8e4afa10f781> in <module>() ----> 1 ds = xray.Dataset(variables={'da':da_reindex}, coords=coords) 2 ds /usr/local/lib/python2.7/dist-packages/xray/core/dataset.pyc in init(self, variables, coords, attrs, compat) 317 coords = set() 318 if variables or coords: --> 319 self._set_init_vars_and_dims(variables, coords, compat) 320 if attrs is not None: 321 self.attrs = attrs /usr/local/lib/python2.7/dist-packages/xray/core/dataset.pyc in _set_init_vars_and_dims(self, vars, coords, compat) 371 aligned = _align_variables(variables) 372 new_variables, new_coord_names = _expand_variables(aligned, --> 373 compat=compat) 374 375 new_coord_names.update(coords) /usr/local/lib/python2.7/dist-packages/xray/core/dataset.pyc in _expand_variables(raw_variables, old_variables, compat) 142 add_variable(dim, coord.variable) 143 var = var.variable --> 144 add_variable(name, var) 145 146 return new_variables, new_coord_names /usr/local/lib/python2.7/dist-packages/xray/core/dataset.pyc in add_variable(name, var) 130 raise ValueError('conflicting value for variable %s:\n' 131 'first value: %r\nsecond value: %r' --> 132 % (name, variables[name], var)) 133 if compat == 'broadcast_equals': 134 maybe_promote_or_replace(name, var) ValueError: conflicting value for variable b: first value: <xray.Coordinate 'b' (b: 3)> array([1, 2, 0]) second value: <xray.Coordinate 'b' (b: 3)> array([0, 1, 2]) ``` But adding with ``` python In [17]: ds ds = xray.Dataset(coords=coords) ds['da']=da_reindex ds Out[17]: <xray.Dataset> Dimensions: (a: 4, b: 3) Coordinates: * a (a) int64 0 1 2 3 * b (b) int64 0 1 2 Data variables: da (a, b) float64 0.05127 0.9546 0.1285 0.2058 0.8027 0.4637 ... ``` Is this desired behavior? I could imagine aligning to coords if they are explicitly supplied, but I don't know the nuances here. |
{
"url": "https://api.github.com/repos/pydata/xarray/issues/674/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
} |
completed | 13221727 | issue |