用于1D numpy数组的Python中值过滤器

时间:2017-01-25 11:57:03

标签: python arrays numpy filtering median

我有一个numpy.array,其维度为dim_array。我期待获得像scipy.signal.medfilt(data, window_len)这样的中位数过滤器。

这实际上不适用于numpy.array,可能是因为维度为(dim_array, 1)而非(dim_array, )

如何获得这样的过滤器?

接下来,另一个问题是,我如何获得其他过滤器,即min,max,mean?

1 个答案:

答案 0 :(得分:3)

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

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

np.median(strided_app(data, window_len,1),axis=1)

对于其他ufuncs,只需在其中使用相应的ufunc名称:np.minnp.max& np.mean。请注意,这是为了提供使用ufunc支持的功能的通用解决方案。

为了获得最佳性能,我们仍然必须研究为此目的而构建的特定功能。对于四个请求的函数,我们有内置函数,如此 -

中位数:scipy.signal.medfilt

Max:scipy.ndimage.filters.maximum_filter1d

Min:scipy.ndimage.filters.minimum_filter1d

意思是:scipy.ndimage.filters.uniform_filter1d