您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

M乘N形状的滑动窗口numpy.ndarray

M乘N形状的滑动窗口numpy.ndarray

In [1]: import numpy as np

In [2]: a = np.array([[00,01], [10,11], [20,21], [30,31], [40,41], [50,51]])

In [3]: w = np.hstack((a[:-2],a[1:-1],a[2:]))

In [4]: w
Out[4]: 
array([[ 0,  1, 10, 11, 20, 21],
       [10, 11, 20, 21, 30, 31],
       [20, 21, 30, 31, 40, 41],
       [30, 31, 40, 41, 50, 51]])

您可以这样写:

def window_stack(a, stepsize=1, width=3):
    n = a.shape[0]
    return np.hstack( a[i:1+n+i-width:stepsize] for i in range(0,width) )

只要,这实际上并不取决于原始数组的形状a.ndim = 2。请注意,在交互式版本中,我从不使用任何长度。形状的第二维无关紧要;每行可以根据需要设置。感谢@Jaime的建议,您完全不需要检查形状就可以做到:

def window_stack(a, stepsize=1, width=3):
    return np.hstack( a[i:1+i-width or None:stepsize] for i in range(0,width) )
其他 2022/1/1 18:28:06 有390人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶