(50) numpy配列の部分統計計算

投稿者: | 2014年8月29日

8,681 views

この記事は最終更新から 1820日 が経過しています。

numpy配列に対して部分的に平均値や標準偏差を求めたい。

以下のように 10行8列の整数配列 aを作る。

>>> import numpy as np
>>> a = (np.random.rand(10,8) * 10).astype(np.int32)
>>> a
array([[2, 7, 7, 9, 9, 4, 4, 3],
       [8, 1, 4, 5, 2, 2, 0, 9],
       [5, 6, 3, 4, 3, 4, 2, 5],
       [0, 0, 7, 9, 3, 8, 6, 5],
       [0, 0, 8, 0, 5, 8, 9, 3],
       [9, 9, 3, 3, 3, 8, 9, 3],
       [4, 3, 9, 7, 9, 2, 6, 2],
       [2, 9, 9, 5, 0, 7, 6, 0],
       [8, 2, 2, 1, 5, 1, 7, 8],
       [7, 0, 4, 6, 8, 9, 0, 5]], dtype=int32)

a[2][3]を起点に 3行2列の範囲に対して統計計算したい。
見辛いので取り出してみる。切り出したものを別変数に代入した方が扱いやすいか…

>>> a[2:2+3, 3:3+2]
array([[4, 3],
       [9, 3],
       [0, 5]], dtype=int32)

sumで総和を求める。

>>> a[2:2+3, 3:3+2].sum()
24

meanで平均値を求める。

>>> a[2:2+3, 3:3+2].mean()
4.0

stdで標準偏差を求める。

>>> a[2:2+3, 3:3+2].std()
2.70801280154532

maxで最大値を求める。

>>> a[2:2+3, 3:3+2].max()
9

minで最小値を求める。

>>> a[2:2+3, 3:3+2].min()
0

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です