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/1046#issuecomment-255246621,https://api.github.com/repos/pydata/xarray/issues/1046,255246621,MDEyOklzc3VlQ29tbWVudDI1NTI0NjYyMQ==,5572303,2016-10-20T22:32:23Z,2016-10-20T22:32:23Z,CONTRIBUTOR,"Let me exhaust a few other ideas first. I'll definitely share my thoughts here first before making any commit. Thanks.
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,182667672
https://github.com/pydata/xarray/issues/1046#issuecomment-253681067,https://api.github.com/repos/pydata/xarray/issues/1046,253681067,MDEyOklzc3VlQ29tbWVudDI1MzY4MTA2Nw==,5572303,2016-10-14T00:53:54Z,2016-10-14T00:53:54Z,CONTRIBUTOR,"My opinion is that the nan has got to go. If we want to (1) maintain pandas-consistency and (2) use bottleneck without mucking it up, then I think we need to add some logic in either rolling.reduce() or rolling._center_result().
So here's my failed attempt:
```
def reverse_and_roll_1d(data, window_size, min_periods=1):
""""""
Implements a concept to fix the end-of-array problem with
xarray.core.rolling._center_shift(),
by
1.) take slice of the back-end of the array
2.) flip it
3.) compute centered-window arithmetic
4.) flip it again
5.) replace back-end of default result with (4)
:param DataArray data: 1-D data array, with dim name 'x'.
:param int window_size: size of window.
""""""
# first the default way to computing centered window
r = data.rolling(x=window_size, center=True, min_periods=min_periods)
avg = r.mean()
# now we need to fix the back-end of the array
rev_start = len(data.x) # an index
rev_end = len(data.x) - window_size - 1 \
if len(data.data) > window_size \
else None # another index
tail_slice = slice(rev_start, rev_end, -1) # back end of array, flipped
r2 = data[dict(x=tail_slice)].\
rolling(x=window_size, center=True, min_periods=min_periods)
avg[dict(x=slice(-window_size+1, None))] = \
r2.mean()[dict(x=slice(window_size-2, None, -1))] # replacement
return avg
```
This algorithm is consistently 8 times slower than pd.DataFrame.rolling(), for various 1d array sizes.
I'm open to ideas as well :)
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,182667672