Python 一维 numpy 数组的中值滤波器
Python Median Filter for 1D numpy array
我有一个尺寸为 dim_array
的 numpy.array
。我期待获得像 scipy.signal.medfilt(data, window_len)
这样的中值滤波器。
这实际上不适用于 numpy.array
可能是因为维度是 (dim_array, 1)
而不是 (dim_array, )
。
如何获取这样的过滤器?
接下来,另一个问题,如何获取其他过滤器,即min、max、mean?
基于 ,我们可以创建滑动 windows 来获得一个 2D
数组,其中 windows 被设置为行。这些 windows 只是 data
数组的视图,因此没有内存消耗,因此效率很高。然后,我们将简单地在每一行 axis=1
.
中使用那些 ufuncs
因此,例如 sliding-
median` 可以这样计算 -
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
.
我有一个尺寸为 dim_array
的 numpy.array
。我期待获得像 scipy.signal.medfilt(data, window_len)
这样的中值滤波器。
这实际上不适用于 numpy.array
可能是因为维度是 (dim_array, 1)
而不是 (dim_array, )
。
如何获取这样的过滤器?
接下来,另一个问题,如何获取其他过滤器,即min、max、mean?
基于 2D
数组,其中 windows 被设置为行。这些 windows 只是 data
数组的视图,因此没有内存消耗,因此效率很高。然后,我们将简单地在每一行 axis=1
.
ufuncs
因此,例如 sliding-
median` 可以这样计算 -
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
.