一维numpy数组的Python中值过滤器

l.l*_*.l. 1 python arrays filtering numpy median

我有numpy.array一个尺寸dim_array。我期待获得像这样的中值过滤器scipy.signal.medfilt(data, window_len)

这实际上不起作用,numpy.array可能是因为尺寸为(dim_array, 1)而不是(dim_array, )

如何获得这样的过滤器?

接下来,另一个问题,如何获得其他过滤器,即最小,最大,均值?

Div*_*kar 5

基于this post,我们可以创建滑动窗口,以将2D此类窗口的数组设置为其中的行。这些窗口仅是data阵列的视图,因此没有内存消耗,因此非常有效。然后,我们只需ufuncs沿每一行使用它们axis=1

因此,例如,中sliding-位数`可以像这样计算:

np.median(strided_app(data, window_len,1),axis=1)
Run Code Online (Sandbox Code Playgroud)

另外ufuncs,只需在其中使用各自的ufunc名称即可: np.minnp.maxnp.mean。请注意,这是为了提供使用ufunc支持功能的通用解决方案。

为了获得最佳性能,仍然必须研究为这些目的而构建的特定功能。对于所请求的四个函数,我们具有内建函数,如下所示:

中位数:scipy.signal.medfilt

最多:scipy.ndimage.filters.maximum_filter1d

敏:scipy.ndimage.filters.minimum_filter1d

意思 : scipy.ndimage.filters.uniform_filter1d