gpt4 book ai didi

python - Python中时间序列的时滞嵌入

转载 作者:行者123 更新时间:2023-12-02 06:14:23 24 4
gpt4 key购买 nike

我有时间序列数据作为 numpy 数组。我想生成这样的数据的时间延迟嵌入:

时间序列是这样的:

    [[   1.           37.17]
[ 2. 36.99]
[ 3. 36.84]
[ 4. 37.57]
[ 5. 37.49]
[ 6. 37.45]
[ 7. 37.82]
[ 8. 37.95]
[ 9. 37.36]
[ 10. 37.84]
[ 11. 37.85]
[ 12. 37.12]]

假设我的窗口大小(w)= 4,间隙(g)= 2。我们将选取每第三个点,直到得到点=窗口大小以形成一个“w”维点。对于下一个“w”维点,我们将序列移动 1,并对移动序列重复相同的过程。这将为我们提供几个“w”维点,这些点最终将存储在 2D numpy 数组中。当我们无法形成“w”维度点时,即当我们到达系列末尾时,我们停止。

那么这个系列的时间延迟嵌入应该是:

    [[ 37.17  37.57  37.82 37.84]
[ 37.99 36.49 36.95 37.85]
[ 37.84 37.45 36.36 37.12]]

我们将在这个特定点停止,因为对于 4 维中的下一个点,我们将用完第四个点。我有大约 1600 点的长时间序列,我希望参数 w 和 g 是可变的。该函数将采用给定的“w”和“g”以及时间序列,并吐出时间延迟嵌入。

最佳答案

想法是生成重新索引矩阵

A = np.array([ 37.17,  36.99,  36.84,  37.57,  37.49,  37.45, 
37.82, 37.95, 37.36, 37.84, 37.85, 37.12])
w = 4
g = 2

使用 wg 进行时间延迟嵌入

A[(np.arange(w)*(g+1))+ np.arange(np.max(a.shape[0] - (w-1)*(g+1), 0)).reshape(-1,1)]

输出:

array([[ 37.17,  37.57,  37.82,  37.84],
[ 36.99, 37.49, 37.95, 37.85],
[ 36.84, 37.45, 37.36, 37.12]])

如果A是矩阵[index, value],则添加值列索引A[n...) ,1]

更新1

# incorrect step count calculation was replaced by a.shape[0]-(w-1)*(g+1)

更新2

# added max to avoid errors on impossible values of g and w
<小时/>

检查有关所用函数的文档 np.arange , np.reshape , broadcasting rulesindexing .

关于python - Python中时间序列的时滞嵌入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com