1. ホーム
  2. python

[解決済み] 1次元numpy配列のためのPythonメディアンフィルタ

2022-02-09 05:36:26

質問

を持っています。 numpy.array 次元で dim_array . のようなメディアンフィルターを得たいと考えています。 scipy.signal.medfilt(data, window_len) .

これは、実際には numpy.array は、ディメンジョンが (dim_array, 1) であって (dim_array, ) .

このようなフィルターはどのように入手できますか?

次に、その他のフィルター、つまりmin、max、meanはどうすれば入手できますか?

どのように解決するのですか?

ベースは this post を得るために、スライディングウィンドウを作成することができます。 2D の配列の中に、そのようなウィンドウが行として設定されています。これらのウィンドウは、単に data という配列で、メモリを消費しないので、かなり効率的です。そして、単純にそれらの ufuncs 各行に沿った axis=1 .

したがって、例えば sliding- median` は次のように計算されます。

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

もう一方の ufuncs を使用すれば、それぞれの ufunc という名前になります。 np.min , np.max & np.mean . を使用する一般的な解決策を与えることを意図していることに注意してください。 ufunc がサポートする機能です。

最高のパフォーマンスを得るためには、やはりその目的のために作られた特定の機能を調べる必要があります。要求された4つの機能については、このようにビルトインが用意されています -。

中央値: scipy.signal.medfilt .

マックス: scipy.ndimage.filters.maximum_filter1d .

Min : scipy.ndimage.filters.minimum_filter1d .

意味 scipy.ndimage.filters.uniform_filter1d