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 2064544219,I_kwDOAMm_X857DnHb,8583,Unexpected Dataset aggregation behavior when weighting,3169620,open,0,,,1,2024-01-03T19:32:11Z,2024-01-04T19:12:58Z,,CONTRIBUTOR,,,,"### What happened? When aggregating a dataset over specified dimensions I don't expect variables which don't have those dimensions to be aggregated. ### What did you expect to happen? When a weighting is applied to the aggregation, variables which do not have the aggregation dimensions are nevertheless aggregated. Presumably because the weights get broadcast across those variables. Perhaps this is the intended behavior but it seems surprising to me and should at least be documented I think. ### Minimal Complete Verifiable Example ```Python import xarray as xr import numpy as np var1 = np.ones((2, 2, 3)) var2 = np.ones((3)) lon = np.arange(4).reshape(2, 2) lat = np.arange(4).reshape(2, 2) ds = xr.Dataset( { ""temperature"": ([""x"", ""y"", ""time""], var1), ""precipitation"": ([""time""], var2), }, coords={ ""lon"": ([""x"", ""y""], lon), ""lat"": ([""x"", ""y""], lat), ""time"": np.arange(3), }, ) print(ds.sum(['x', 'y'])) # Precipitation (with no x or y dimension) is not summed over, leading to values [1. 1. 1.] print(ds.weighted(xr.ones_like(ds['temperature'])).sum(['x', 'y'])) # Precipitation is now summed over, leading to values [4. 4. 4.] ``` ### MVCE confirmation - [X] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray. - [X] Complete example — the example is self-contained, including all data and the text of any traceback. - [X] Verifiable example — the example copy & pastes into an IPython prompt or [Binder notebook](https://mybinder.org/v2/gh/pydata/xarray/main?urlpath=lab/tree/doc/examples/blank_template.ipynb), returning the result. - [X] New issue — a search of GitHub Issues suggests this is not a duplicate. - [X] Recent environment — the issue occurs with the latest version of xarray and its dependencies. ### Relevant log output _No response_ ### Anything else we need to know? _No response_ ### Environment
INSTALLED VERSIONS ------------------ commit: None python: 3.9.16 | packaged by conda-forge | (main, Feb 1 2023, 21:38:11) [Clang 14.0.6 ] python-bits: 64 OS: Darwin OS-release: 23.1.0 machine: arm64 processor: arm byteorder: little LC_ALL: None LANG: None LOCALE: (None, 'UTF-8') libhdf5: 1.12.2 libnetcdf: 4.9.1 xarray: 2023.3.0 pandas: 1.5.3 numpy: 1.23.5 scipy: 1.10.1 netCDF4: 1.6.3 pydap: None h5netcdf: None h5py: 3.8.0 Nio: None zarr: 2.14.2 cftime: 1.6.2 nc_time_axis: None PseudoNetCDF: None rasterio: 1.3.6 cfgrib: None iris: 3.4.1 bottleneck: None dask: 2023.3.2 distributed: 2023.3.2.1 matplotlib: 3.7.1 cartopy: 0.21.1 seaborn: 0.12.2 numbagg: None fsspec: 2023.10.0 cupy: None pint: None sparse: None flox: None numpy_groupies: None setuptools: 67.6.1 pip: 23.0.1 conda: None pytest: None mypy: None IPython: 8.12.0 sphinx: None
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/8583/reactions"", ""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue 283279898,MDExOlB1bGxSZXF1ZXN0MTU5MjAzMTkx,1791,Cookbook docs,3169620,open,0,,,0,2017-12-19T15:55:39Z,2022-06-09T14:50:17Z,,CONTRIBUTOR,,0,pydata/xarray/pulls/1791,"Closes #1790 This is a bit empty at the moment so feel free to add any snippets you think would be useful :-) ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1791/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 282964952,MDU6SXNzdWUyODI5NjQ5NTI=,1790,'Cookbook' page,3169620,open,0,,,6,2017-12-18T17:46:25Z,2019-12-08T23:31:08Z,,CONTRIBUTOR,,,,"Would there be interest in adding a 'cookbook' section to the docs a-la [Pandas](http://pandas.pydata.org/pandas-docs/stable/cookbook.html)? The current Recipes section might then be better renamed as Gallery? It's useful for the kind of thing which isn't a full-fledged example, but might be useful nonetheless. I'll hapily put together a pull-request if there's interest. ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1790/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,issue 281897468,MDU6SXNzdWUyODE4OTc0Njg=,1778,ValueError on empty selection with dask based DataArrays,3169620,closed,0,,3801867,2,2017-12-13T21:09:42Z,2019-07-12T13:41:08Z,2019-07-12T13:41:08Z,CONTRIBUTOR,,,,"#### Code Sample, a copy-pastable example if possible ```python import xarray as xr import numpy as np da = xr.DataArray(np.random.rand(15), dims=['latitude'], coords={'latitude':np.linspace(90, -90, 15)}) # This gives an empty latitude slice print(da.sel(latitude=slice(20, 60))) # After converting the DataArray to dask... da=da.chunk() # ...this throws a ValueError due to 'conflicting sizes' print(da.sel(latitude=slice(20, 60))) ``` #### Problem description I would expect the dask based DataArray to return an empty slice just as the numpy one does. Although arguably it would be nicer if both returned the latitude values between 20 and 60 - regardless of the direction of the coordinate. Perhaps the sel method could check whether the coordinate is increasing or decreasing? #### Output of ``xr.show_versions()``
# Paste the output here xr.show_versions() here xarray version: 0.9.6 numpy version: 1.13.3 dask version: 0.15.4
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1778/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue 293445250,MDU6SXNzdWUyOTM0NDUyNTA=,1877,TypeError for NetCDF float16 output,3169620,closed,0,,,4,2018-02-01T08:39:03Z,2018-02-26T10:46:47Z,2018-02-26T10:46:47Z,CONTRIBUTOR,,,,"```python ds = xr.Dataset({""test"": np.arange(0, 5, dtype='float16')}) ds.to_netcdf('test.nc') ``` This fails because the float16 type doesn't exist for NetCDF files, throwing an `TypeError: illegal primitive data type.` It might be nice if the xarray netCDF engine promoted this to float32 instead. #### Output of ``xr.show_versions()``
INSTALLED VERSIONS ------------------ commit: None python: 3.6.4.final.0 python-bits: 64 OS: Linux OS-release: 3.11.0-26-generic machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_GB.UTF-8 LOCALE: en_GB.UTF-8 xarray: 0.10.0 pandas: 0.22.0 numpy: 1.14.0 scipy: 1.0.0 netCDF4: 1.3.1 h5netcdf: 0.5.0 Nio: None bottleneck: 1.2.1 cyordereddict: None dask: 0.16.1 matplotlib: 2.1.2 cartopy: 0.15.1 seaborn: 0.8.1 setuptools: 38.4.0 pip: 9.0.1 conda: None pytest: None IPython: 6.2.1 sphinx: None
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1877/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue 278286073,MDExOlB1bGxSZXF1ZXN0MTU1NzMxMjI3,1750,xarray to and from Iris,3169620,closed,0,,,16,2017-11-30T22:04:46Z,2018-01-03T10:19:16Z,2017-12-20T15:14:17Z,CONTRIBUTOR,,0,pydata/xarray/pulls/1750," - [x] Closes #621 and #37 - finishes #814 - [x] Tests added / passed - [x] Passes ``git diff upstream/master **/*py | flake8 --diff`` - [x] Fully documented, including `whats-new.rst` for all changes and `api.rst` for new API ","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1750/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,,13221727,pull 273459295,MDU6SXNzdWUyNzM0NTkyOTU=,1715,Error accessing isnull() and notnull() on Dataset,3169620,closed,0,,,3,2017-11-13T14:59:30Z,2017-11-13T16:07:01Z,2017-11-13T16:07:01Z,CONTRIBUTOR,,,,"#### Code Sample, a copy-pastable example if possible ```python # Create basic Dataset import numpy as np import pandas as pd import xarray as xr temp = 15 + 8 * np.random.randn(2, 2, 3) precip = 10 * np.random.rand(2, 2, 3) lon = [[-99.83, -99.32], [-99.79, -99.23]] lat = [[42.25, 42.21], [42.63, 42.59]] # for real use cases, its good practice to supply array attributes such as # units, but we won't bother here for the sake of brevity ds = xr.Dataset({'temperature': (['x', 'y', 'time'], temp), 'precipitation': (['x', 'y', 'time'], precip)}, coords={'lon': (['x', 'y'], lon), 'lat': (['x', 'y'], lat), 'time': pd.date_range('2014-09-06', periods=3), 'reference_time': pd.Timestamp('2014-09-05')}) # Both of these throw attribute errors ds.notnull() # ds.isnull() ``` #### Problem description The above methods throw `AttributeError: 'Variable' object has no attribute '_constructor'` errors when called on Datasets. It's not clear if this operation is currently supported, but if it's not then it probably shouldn't be exposed through the API. #### Expected Output Dataset of boolean DataArrays indicating null-ness. #### Output of ``xr.show_versions()``
Show_versions() doesn't seem to exist in 0.9.6, but presumably this covers it: Numpy version: 1.13.1 Pandas version: 0.21.0 XArray version: 0.9.6
","{""url"": ""https://api.github.com/repos/pydata/xarray/issues/1715/reactions"", ""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,completed,13221727,issue