【问题标题】:Python Median Filter for 1D numpy array用于一维 numpy 数组的 Python 中值滤波器
【发布时间】:2017-06-10 14:25:32
【问题描述】:

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

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

如何获得这样的过滤器?

接下来,另一个问题,我怎样才能获得其他过滤器,即min,max,mean?

【问题讨论】:

  • 也许您只是想将 (N,1) 数组重塑/展平为 (N,)。
  • 所以也许我必须这样做:data = np.reshape(data, len(data))
  • 更好data.flatten(order='C');这项工作!谢谢@John Zwinck。现在对于第二个问题,我怎样才能获得这些其他过滤器?

标签: python arrays numpy filtering median


【解决方案1】:

基于this post,我们可以创建滑动窗口来获得一个2D数组,这些窗口被设置为其中的行。这些窗口只是data 数组的视图,因此没有内存消耗,因此非常有效。然后,我们只需在每一行使用ufuncsaxis=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.

最大:scipy.ndimage.filters.maximum_filter1d。

最小:scipy.ndimage.filters.minimum_filter1d.

平均:scipy.ndimage.filters.uniform_filter1d

【讨论】:

  • 再次感谢@Divakar
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 2022-01-21
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
相关资源
最近更新 更多