我有numpy.array
一个尺寸dim_array
。我期待获得像这样的中值过滤器scipy.signal.medfilt(data, window_len)
。
这实际上不起作用,numpy.array
可能是因为尺寸为(dim_array, 1)
而不是(dim_array, )
。
如何获得这样的过滤器?
接下来,另一个问题,如何获得其他过滤器,即最小,最大,均值?
基于this post
,我们可以创建滑动窗口,以将2D
此类窗口的数组设置为其中的行。这些窗口仅是data
阵列的视图,因此没有内存消耗,因此非常有效。然后,我们只需ufuncs
沿每一行使用它们axis=1
。
因此,例如,中sliding-
位数`可以像这样计算:
np.median(strided_app(data, window_len,1),axis=1)
另外ufuncs
,只需在其中使用各自的ufunc
名称即可: np.min
,np.max
& np.mean
。请注意,这是为了提供使用ufunc
支持功能的通用解决方案。
为了获得最佳性能,仍然必须研究为这些目的而构建的特定功能。对于所请求的四个函数,我们具有内建函数,如下所示:
中位数:scipy.signal.medfilt
。
最多:scipy.ndimage.filters.maximum_filter1d
。
敏:scipy.ndimage.filters.minimum_filter1d
。
意思 : scipy.ndimage.filters.uniform_filter1d