python - Pandas 函数返回窗口长度的所有子序列
问题描述
我知道 pandas 具有df.rolling()
可以对子系列的移动窗口进行操作的功能。但是,是否有一个函数可以简单地返回子系列而不是窗口对象df.rolling()
?
例如,[1,2,3,4,5,6,7,8,9]
窗口长度为 3 的系列将具有 subseries {[1,2,3], [2,3,4], [3,4,5], [4,5,6], [5,6,7], [6,7,8], [7,8,9]}
。
我可以用 N = 系列长度和 m = 窗口长度做一个 for 循环,
vectors = np.zeros((N-m+1, m))
for i in range(N-m+1):
vectors[i] = ts[i:i+m]
但与内置函数相比,它会显着增加运行时间。
解决方案
我将在此处的答案中写下 Nk03 的评论,以便更明显。
新的numpy版本1.20.0有一个功能,我可以用
np.lib.stride_tricks.sliding_window_view(ts, window_shape=m)
API 页面在这里:https ://numpy.org/devdocs/reference/generated/numpy.lib.stride_tricks.sliding_window_view.html
请注意,版本 <1.20.0 没有此功能。
推荐阅读
- php - 无法更新数据,因为调用未定义的方法 Illuminate\Database\Query\Builder::save()
- java - 如何在java中发送'SIP请求'(SIP客户端)
- java - 如何使用 Graphics2d.setPaint() 在 Java 中快速绘制大型数据集
- python - 使用 pip 安装“SSLError”
- javascript - 当滚动出这个元素时,我必须改变什么才能在 div 和 fadOut 上进行淡入淡出?
- python - 几何中位数
- python - 列表理解 - 默认第一个值
- javascript - 在Javascript中按Id过滤json对象
- angular - 如何编写单元测试来捕获异常在函数中的异步块(可观察或承诺)中抛出的异常?
- python - 如何从文本中提取特定部分