
174
7 章 NumPy 入門
7.2.1
移動平均の計算
例
7-3
は、
1
次元
NumPy
array
の移動平均を計算するために必要なコード行を表しています
†
。
これは適切で簡潔ですが、この数行で多くの処理が行われています。少し分析してみましょう。
例
7-3
NumPy
での移動平均
def moving_average(a, n=3):
ret = np.cumsum(a, dtype=float)
ret[n:] = ret[n:] - ret[:-n]
return ret[n - 1:] / n
この関数は、
array
a
とムービングウィンドウのサイズを指定する数値
n
を取ります。
まず、
NumPy
の組み込みメソッドを使って累積和を計算します。
a = np.arange(6)
# array([0, 1, 2, 3, 4, 5])
csum = np.cumsum(a)
csum
Out: array([0, 1, 3, 6, 10, 15])
累積和
array
の
n
番目のインデックスから始め、すべての
i
に対して
i
−
n
番目の値を引きま
す。すると、
i
は
a
の直近の
n
個の値の和になります。以下は、ウィンドウサイズが
3
の例です。
# a = array([0, 1, 2, 3, 4 , 5])
# csum = array([0, 1, 3, 6, 10, 15])
csum[3:] = csum[3:] - csum[:-3]
# csum = array([0, 1, 3, 6, 9, 12])
配列
a
と最終的な配列 ...