圆形阵列上的滚动窗口

2024-04-27 00:47:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想应用一个给定的函数(尤其是np.标准())对一系列测量, 我想把它涂在一定尺寸的滚动窗上。在

但是-由于测量是在一个圆形阵列中进行的-我还需要滚动窗口能够从阵列的末端到它的开始重叠。在

因此,我无法使用Rolling window for 1D arrays in Numpy?中的答案。。。我试着修改它的方法,但我不是一个裸体专家,我无法理解是什么np.lib.stride\u技巧。就像_striped所做的那样(它的文档在哪里?)在


Tags: 方法函数答案innumpyfor标准尺寸
1条回答
网友
1楼 · 发布于 2024-04-27 00:47:22

用足够的值填充原始数组,以生成一个“伪圆形”数组。然后将rolling_window应用于伪圆形数组:

import numpy as np

def rolling_window(a, window):
    # http://www.mail-archive.com/numpy-discussion@scipy.org/msg29450.html
    shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
    strides = a.strides + (a.strides[-1],)
    return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)

def circular_rolling_window(a, window):
    pseudocircular = np.pad(a, pad_width=(0, windowsize-1), mode='wrap')
    return rolling_window(pseudocircular, windowsize)

a = np.arange(5)
windowsize = 3
print(circular_rolling_window(a, windowsize))

收益率

^{pr2}$

相关问题 更多 >