NumPy で 1D 配列のローリング ウィンドウを実装する
1D 配列に対してローリング ウィンドウ操作を効率的に実行する必要性は、データ分析や操作において頻繁に発生します。 。数値演算用の強力なライブラリである NumPy は、このタスクに多用途のソリューションを提供します。
たとえば、値の 1D リストのローリング標準偏差を計算するタスクを考えてみましょう。質問に示されているように、ループを使用した基本的な Python 実装は、大規模なデータセットでは計算コストが高くなる可能性があります。
NumPy ベースのソリューション
このプロセスを最適化するために、NumPy は次のことを提供します。簡潔で効率的なアプローチ:
<code class="python">import numpy as np def rolling_std(array, window): return np.std(np.lib.stride_tricks.as_strided(array, shape=array.shape[0] - window + 1, strides=(array.strides[0], array.strides[0])), 1)</code>
rolling_std 関数は、1D 配列と目的のウィンドウ サイズ window の 2 つの引数を受け取ります。
NumPy の as_strided 関数は、あたかも配列のビューを作成します。効率的な計算を可能にするストライドを使用して、重複するウィンドウに分割されました。
np.std 関数は、2 番目の次元に沿って標準偏差を計算し、ローリング操作を効果的に実行します。
使用法
入力配列の観測値のローリング標準偏差を計算するには、次のように呼び出します。
<code class="python">stdev = rolling_std(observations, window_size)</code>
このソリューションはパフォーマンスが高く、明示的なループの必要性を排除し、次の機能を最大限に活用します。配列を効率的に操作するための NumPy の機能。
以上がNumPy でローリング標準偏差を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。