ホームページ >バックエンド開発 >Python チュートリアル >NumPy でローリング標準偏差を効率的に計算するにはどうすればよいですか?

NumPy でローリング標準偏差を効率的に計算するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 16:17:02434ブラウズ

How to Efficiently Calculate Rolling Standard Deviations in NumPy?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。