基于this post https://stackoverflow.com/a/40085052/3293881,我们可以创建滑动窗口来获得2D
此类窗口的数组被设置为其中的行。这些窗户仅仅是看到外面的景色data
数组,因此不消耗内存,因此效率很高。然后,我们只需使用那些ufuncs
沿着每一行axis=1
.
因此,例如sliding-
median` 可以这样计算 -
np.median(strided_app(data, window_len,1),axis=1)
对于另一个ufuncs
,只需使用相应的ufunc
那里的名字:np.min
, np.max
& np.mean
。请注意,这是为了提供一个通用的解决方案来使用ufunc
支持的功能。
为了获得最佳性能,人们仍然必须研究为这些目的而构建的特定函数。对于四个请求的函数,我们有内置函数,如下所示 -
中位数:scipy.signal.medfilt https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.medfilt.html.
Max : scipy.ndimage.filters.maximum_filter1d https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.ndimage.filters.maximum_filter1d.html.
Min : scipy.ndimage.filters.minimum_filter1d https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.ndimage.filters.minimum_filter1d.html.
Mean : scipy.ndimage.filters.uniform_filter1d https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.ndimage.filters.uniform_filter1d.html