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/6749#issuecomment-1178768111,https://api.github.com/repos/pydata/xarray/issues/6749,1178768111,IC_kwDOAMm_X85GQpLv,43316012,2022-07-08T09:30:56Z,2022-07-08T09:30:56Z,COLLABORATOR,"Another option is to add an option: `missing_dim`: ""raise"", ignore"" or ""broadcast"". The default then would be ignore, which is the current implementation. But for workflows of variables that are either DataArray or Dataset, this argument should be added to `DataArray.sum/count/prod` as well?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1292284929 https://github.com/pydata/xarray/issues/6749#issuecomment-1177944075,https://api.github.com/repos/pydata/xarray/issues/6749,1177944075,IC_kwDOAMm_X85GNgAL,43316012,2022-07-07T17:07:10Z,2022-07-07T17:07:10Z,COLLABORATOR,I think that changing the behavior of sum is quite a large breaking change.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1292284929 https://github.com/pydata/xarray/issues/6749#issuecomment-1176959116,https://api.github.com/repos/pydata/xarray/issues/6749,1176959116,IC_kwDOAMm_X85GJviM,2448579,2022-07-07T02:05:06Z,2022-07-07T02:05:06Z,MEMBER,"We discussed: 1. dropping variables without the dimension 2. Return ds.sizes[""x""] by broadcasting `b` along `x` ----- For the other reductions ``` python import numpy as np import xarray as xr from xarray.core.duck_array_ops import count ds = xr.Dataset({""a"": (""x"", [1, 2, 3]), ""b"": (""y"", [4, 5])}) for func in [np.nansum, np.nanprod, np.nanmean, np.nanvar, np.nanstd, count]: print(f""{func.__name__!s}({ds.b.data}, axis=()) = {func(ds.b.data, axis=())}"") ``` gives ``` nansum([4 5], axis=()) = [4 5] nanprod([4 5], axis=()) = [4 5] nanmean([4 5], axis=()) = [4. 5.] nanvar([4 5], axis=()) = [0. 0.] nanstd([4 5], axis=()) = [0. 0.] count([4 5], axis=()) = [1 1] ``` I guess the output for nansum, nanprod doesn't match what you would get by broadcasting along the absent dimension.","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1292284929 https://github.com/pydata/xarray/issues/6749#issuecomment-1176517619,https://api.github.com/repos/pydata/xarray/issues/6749,1176517619,IC_kwDOAMm_X85GIDvz,43316012,2022-07-06T17:58:49Z,2022-07-06T17:58:49Z,COLLABORATOR,"> What happens when you call a ufunc with an empty axis tuple? This should also happen with all other ufuncs then? I guess most of them just work, like mean, sum etc. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1292284929 https://github.com/pydata/xarray/issues/6749#issuecomment-1175235698,https://api.github.com/repos/pydata/xarray/issues/6749,1175235698,IC_kwDOAMm_X85GDKxy,2448579,2022-07-05T16:09:55Z,2022-07-05T16:09:55Z,MEMBER,"This is quite confusing and I doubt it's intentional. I would've expected `b (y) int32 3 3` assuming that it would've been broadcast along the reduction dimension. The final value is the result of ``` python import numpy as np from xarray.core.duck_array_ops import isnull np.sum(np.logical_not(isnull(ds.b.data)), axis=()) # np.sum([True, True], axis=()) ``` What happens when you call a ufunc with an empty axis tuple? I bet this is just casting bool to int.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1292284929