home / github / issues

Menu
  • GraphQL API
  • Search all tables

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 coords here:

``` 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 coords=coords, it raises, since there are conflicting coords:

``` 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 __setitem__ aligns as expected:

``` 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

Links from other tables

  • 0 rows from issues_id in issues_labels
  • 8 rows from issue in issue_comments
Powered by Datasette · Queries took 1.332ms · About: xarray-datasette