home / github / issues

Menu
  • Search all tables
  • GraphQL API

issues: 976207971

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
976207971 MDU6SXNzdWU5NzYyMDc5NzE= 5727 Setting item with loc and boolean mask fails 5802846 closed 0     3 2021-08-21T19:41:56Z 2022-03-17T17:11:43Z 2022-03-17T17:11:43Z CONTRIBUTOR      

What happened: When setting a DataArray with loc, xarray converts bool masks to the coord data type. Therefore loc does not use a boolean mask but tries to match the indexes of the coord.

Minimal Complete Verifiable Example:

```python import numpy as np import xarray as xr

x = np.arange(10).astype(np.float64) fx = np.arange(10).astype(np.float64) da = xr.DataArray(fx,dims=['x'],coords={'x':x}) mask = np.zeros((10,)) mask[1::2] = 1 mask = mask.astype(bool) da.loc[{'x':~mask}] = np.arange(5)+10 ```

Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/matthmey/miniconda3/envs/analytics/lib/python3.7/site-packages/xarray/core/dataarray.py", line 214, in __setitem__ self.data_array[pos_indexers] = value File "/home/matthmey/miniconda3/envs/analytics/lib/python3.7/site-packages/xarray/core/dataarray.py", line 767, in __setitem__ self.variable[key] = value File "/home/matthmey/miniconda3/envs/analytics/lib/python3.7/site-packages/xarray/core/variable.py", line 854, in __setitem__ indexable[index_tuple] = value File "/home/matthmey/miniconda3/envs/analytics/lib/python3.7/site-packages/xarray/core/indexing.py", line 1164, in __setitem__ array[key] = value ValueError: shape mismatch: value array of shape (5,) could not be broadcast to indexing result of shape (10,)

Anything else we need to know?: <del>Could be fixed by replacing the line, but maybe this is not the cleanest solution.</del> I tried fixing it with the following, which works for the above code but fails for other cases. if label.dtype != np.bool: label = maybe_cast_to_coords_dtype(label, coord.dtype)

Environment:

Output of <tt>xr.show_versions()</tt> INSTALLED VERSIONS ------------------ commit: None python: 3.7.0 (default, Oct 9 2018, 10:31:47) [GCC 7.3.0] python-bits: 64 OS: Linux OS-release: 5.4.0-80-lowlatency machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_US.UTF-8 LOCALE: ('en_US', 'UTF-8') libhdf5: None libnetcdf: None xarray: 0.19.0 pandas: 1.0.1 numpy: 1.18.1 scipy: 1.4.1 netCDF4: None pydap: None h5netcdf: None h5py: None Nio: None zarr: 2.5.0 cftime: None nc_time_axis: None PseudoNetCDF: None rasterio: None cfgrib: None iris: None bottleneck: None dask: 2.14.0 distributed: None matplotlib: 3.1.3 cartopy: None seaborn: None numbagg: None pint: None setuptools: 46.1.3.post20200330 pip: 20.0.2 conda: None pytest: None IPython: 7.13.0 sphinx: None
{
    "url": "https://api.github.com/repos/pydata/xarray/issues/5727/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

  • 1 row from issues_id in issues_labels
  • 3 rows from issue in issue_comments
Powered by Datasette · Queries took 4.555ms · About: xarray-datasette