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/pull/2236#issuecomment-424700785,https://api.github.com/repos/pydata/xarray/issues/2236,424700785,MDEyOklzc3VlQ29tbWVudDQyNDcwMDc4NQ==,6815844,2018-09-26T12:42:55Z,2018-09-26T12:42:55Z,MEMBER,"Thanks, @st-bender, for the bug report. I copied your comment to #2440. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-413446001,https://api.github.com/repos/pydata/xarray/issues/2236,413446001,MDEyOklzc3VlQ29tbWVudDQxMzQ0NjAwMQ==,6815844,2018-08-16T06:59:37Z,2018-08-16T06:59:37Z,MEMBER,Thanks for the review. Merging.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-413431477,https://api.github.com/repos/pydata/xarray/issues/2236,413431477,MDEyOklzc3VlQ29tbWVudDQxMzQzMTQ3Nw==,6815844,2018-08-16T05:37:25Z,2018-08-16T05:37:25Z,MEMBER,"Thanks, @shoyer. All done.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-412249461,https://api.github.com/repos/pydata/xarray/issues/2236,412249461,MDEyOklzc3VlQ29tbWVudDQxMjI0OTQ2MQ==,6815844,2018-08-11T04:15:30Z,2018-08-11T04:15:30Z,MEMBER,Can anyone give further review?,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-412249224,https://api.github.com/repos/pydata/xarray/issues/2236,412249224,MDEyOklzc3VlQ29tbWVudDQxMjI0OTIyNA==,6815844,2018-08-11T04:08:59Z,2018-08-11T04:08:59Z,MEMBER,"I noticed `min_count` is working also on `resample`d object. [Your issue](#2356) might be for the API of `resample`.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-412246496,https://api.github.com/repos/pydata/xarray/issues/2236,412246496,MDEyOklzc3VlQ29tbWVudDQxMjI0NjQ5Ng==,6815844,2018-08-11T03:00:13Z,2018-08-11T03:00:13Z,MEMBER,"@rpnaut Thanks for testing. > Your min_count argument is not allowed for type 'dataset' but only for type 'dataarray'. Starting with the dataset located here: I think it is not true. It works on Dataset, but not on `resample`d object. I will raise a issue for this later.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-403272397,https://api.github.com/repos/pydata/xarray/issues/2236,403272397,MDEyOklzc3VlQ29tbWVudDQwMzI3MjM5Nw==,6815844,2018-07-08T08:40:55Z,2018-07-08T08:40:55Z,MEMBER,I think this is ready for another review.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-399279344,https://api.github.com/repos/pydata/xarray/issues/2236,399279344,MDEyOklzc3VlQ29tbWVudDM5OTI3OTM0NA==,6815844,2018-06-21T23:59:48Z,2018-06-21T23:59:48Z,MEMBER,"Thanks, @rpnaut . Actually, I'm changing the code also around `sum`. So it looks my change caused the bug you reported. I think we do not have a good test coverage around the dataset.reduction. I will add the test also. Thanks again for the testing :) ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-399278523,https://api.github.com/repos/pydata/xarray/issues/2236,399278523,MDEyOklzc3VlQ29tbWVudDM5OTI3ODUyMw==,6815844,2018-06-21T23:54:23Z,2018-06-21T23:54:23Z,MEMBER,"@shoyer , thanks for the details. I think I understood your idea. This sounds a cleaner solution. I will update the code again, but it will take some more days (or a week).","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-398931150,https://api.github.com/repos/pydata/xarray/issues/2236,398931150,MDEyOklzc3VlQ29tbWVudDM5ODkzMTE1MA==,1217238,2018-06-20T23:42:04Z,2018-06-20T23:42:04Z,MEMBER,">> A module of bottleneck/numpy functions that act on numpy arrays only. >>A module of functions that act on numpy or dask arrays (or these could be moved into duck_array_ops). > Could you explain more detail about this idea? OK, let me try: 1. On numpy arrays, we use bottleneck eqiuvalents of numpy functions when possible because bottleneck is faster than numpy 2. On dask arrays, we use dask equivalents of numpy functions. 3. We also want to add some extra features on top of what numpy/dask/bottleneck provide, e.g., handling of `min_count` We could implement this with: - `nputils.nansum()` is equivalent to `numpy.nansum()` but uses `bottleneck.nansum()` internally instead when possible. - `duck_array_ops.nansum()` uses `numpy_nansum()` or `dask.array.nansum()`, based upon the type of the inputs. - `duck_array_ops.sum()` uses `numpy.sum()` or `dask.array.sum()`, based upon the type of the inputs. - `duck_array_ops.sum_with_mincount()` adds `mincount` and `skipna` support and is used in the `Dataset.sum()` implementation. Its is written using `duck_array_ops.nansum()`, `duck_array_ops.sum()`, `duck_array_ops.where()` and `duck_array_ops.isnull()`. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-398926990,https://api.github.com/repos/pydata/xarray/issues/2236,398926990,MDEyOklzc3VlQ29tbWVudDM5ODkyNjk5MA==,6815844,2018-06-20T23:17:12Z,2018-06-20T23:17:12Z,MEMBER,"> I think it would make sense to restructure this a little bit to have two well defined layers: > A module of bottleneck/numpy functions that act on numpy arrays only. > A module of functions that act on numpy or dask arrays (or these could be moved into duck_array_ops). Could you explain more detail about this idea?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242 https://github.com/pydata/xarray/pull/2236#issuecomment-398150942,https://api.github.com/repos/pydata/xarray/issues/2236,398150942,MDEyOklzc3VlQ29tbWVudDM5ODE1MDk0Mg==,1217238,2018-06-18T18:28:58Z,2018-06-18T18:28:58Z,MEMBER,"Very nice! > In my implementation, bottleneck is not used when skipna=False. bottleneck would be advantageous when skipna=True as numpy needs to copy the entire array once, but I think numpy's method is still OK if skipna=False. I think this is correct -- bottleneck does not speed up non-NaN skipping functions.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,333248242