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/3671#issuecomment-573270896,https://api.github.com/repos/pydata/xarray/issues/3671,573270896,MDEyOklzc3VlQ29tbWVudDU3MzI3MDg5Ng==,6815844,2020-01-11T02:24:19Z,2020-01-11T02:24:19Z,MEMBER,"> But I mistakenly thought that there was a performance penalty to doing this.
Yes, `construct(stride=2)` does exactly the same thing before returning an array.
https://github.com/pydata/xarray/blob/ff75081304eb2e2784dcb229cc48a532da557896/xarray/core/rolling.py#L242","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,546791416
https://github.com/pydata/xarray/issues/3671#issuecomment-572931220,https://api.github.com/repos/pydata/xarray/issues/3671,572931220,MDEyOklzc3VlQ29tbWVudDU3MjkzMTIyMA==,12862013,2020-01-10T08:40:35Z,2020-01-10T08:40:35Z,CONTRIBUTOR,"Hi @fujiisoup, thx for your response.
That is exactly what I needed and what I used to do. But I mistakenly thought that there was a performance penalty to doing this. But the performance decrease turned out to be the result of the order in which I rolled and sliced.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,546791416
https://github.com/pydata/xarray/issues/3671#issuecomment-572718436,https://api.github.com/repos/pydata/xarray/issues/3671,572718436,MDEyOklzc3VlQ29tbWVudDU3MjcxODQzNg==,6815844,2020-01-09T19:32:29Z,2020-01-09T19:32:29Z,MEMBER,"Hi @mark-boer for raising an issue.
I am not sure if I got the point exactly, but the following is similar to what you want?
```python
In [81]: arr = xr.DataArray(np.arange(4), dims=(""x"",))
...: arr.rolling(x=2).construct(""roll_x"").isel(x=slice(1, None, 2))
Out[81]:
array([[0., 1.],
[2., 3.]])
Dimensions without coordinates: x, roll_x
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,546791416
https://github.com/pydata/xarray/issues/3671#issuecomment-572556658,https://api.github.com/repos/pydata/xarray/issues/3671,572556658,MDEyOklzc3VlQ29tbWVudDU3MjU1NjY1OA==,12862013,2020-01-09T13:17:29Z,2020-01-09T13:17:29Z,CONTRIBUTOR,"Small update:
I was currently using:
```
data = (
data.rolling(x=window_size ).construct(""roll_x"")
.rolling(y=window_size ).construct(""roll_y"")
.isel(x=slice(window_size - 1, None, stride), y=slice(window_size - 1, None, stride))
.stack(n=(""x"", ""y""))
)
```
but this was performing quite badly for larger arrays. However after having a look at `DataArrayRolling` and rewriting this piece of code to the following, performance was good.
```
data = (
data.rolling(x=window_size ).construct(""roll_x"")
.isel(x=slice(window_size - 1, None, stride))
.rolling(y=window_size ).construct(""roll_y"")
.isel(y=slice(window_size - 1, None, stride))
.stack(n=(""x"", ""y""))
)
```
I saw that `DataArrayRolling.construct()` also uses a slice (`isel`) to create the strided array, so there is not much of a performance penalty of first creating a rolling window with stride 1 and then slicing the data.
However, if you want to add strides to the 'Strided rolling' (#3607) it would be nice to still be able to create rolling windows that start at index 0.
By the way: feel free to close this issue, if you do not see a need for an alignment option.
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,546791416