我一直在网络上搜索可以创建滚动窗口的方法,以便可以以通用的方式对时间序列执行交叉验证技术,即“前行分析”。
但是,我还没有解决任何在以下方面引入灵活性的解决方案:1)窗口大小(几乎所有方法都具有此功能;例如,pandas
滚动或稍微不同的np.roll)和2)窗口滚动量,即如何我们想滚动窗口很多索引(即,没有找到任何包含此索引的索引)。
我一直在这个答案的@coldspeed的帮助下尝试优化和编写简洁的代码(由于无法达到所需的声誉,我无法在此处发表评论;希望尽快到达那里!),但我没有不能计入窗户滚动量。
我的想法:
我尝试了np.roll
下面的示例,但没有成功。
我还试图修改下面乘以该ith
值的代码,但是我没有使其适合列表理解,而我想维护该列表理解。
3.下面的示例适用于任何大小的窗口,但是,它仅将窗口“滚动”向前一步,我希望可以将其推广到任何一步。
因此,有什么方法可以在列表理解方法中使用这两个参数?或者,¿还有其他我找不到的资源可以使此操作变得容易吗?非常感谢所有帮助。我的示例代码如下:
In [1]: import numpy as np
In [2]: arr = np.random.random((10,3))
In [3]: arr
Out[3]: array([[0.38020065, 0.22656515, 0.25926935],
[0.13446667, 0.04386083, 0.47210474],
[0.4374763 , 0.20024762, 0.50494097],
[0.49770835, 0.16381492, 0.6410294 ],
[0.9711233 , 0.2004874 , 0.71186102],
[0.61729025, 0.72601898, 0.18970222],
[0.99308981, 0.80017134, 0.64955358],
[0.46632326, 0.37341677, 0.49950571],
[0.45753235, 0.55642914, 0.31972887],
[0.4371343 , 0.08905587, 0.74511753]])
In [4]: inSamplePercentage = 0.4 …
Run Code Online (Sandbox Code Playgroud)