NumPy配列の集計処理(合計/平均とか)

配列の要素の合計や平均などの集計処理をする関数を紹介する。配列をスカラーに、または2次元配列を1次元にするので、次元削減ともいう。

平均を計算する mean での例

ndarr1 = np.array([1., 2., 3., 4., 5., 6., 7., 8., 9.])

print(ndarr1)
# 出力結果
# [ 1.  2.  3.  4.  5.  6.  7.  8.  9.]

print(ndarr1.mean())
# 出力結果
# 5.0

メソッドの形式ではなくて関数の形式でもよい。

ndarr1 = np.array([1., 2., 3., 4., 5., 6., 7., 8., 9.])

print(np.mean(ndarr1))
# 出力結果
# 5.0

多次元配列では次元をまたいですべての要素の平均を計算する。

3次元配列での例

ndarr1 = np.array([[[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]], [[101., 102., 103.], [104., 105., 106.], [107., 108., 109.]]])

print(ndarr1)
# 出力結果
# [[[   1.    2.    3.]
#   [   4.    5.    6.]
#   [   7.    8.    9.]]
# 
#  [[ 101.  102.  103.]
#   [ 104.  105.  106.]
#   [ 107.  108.  109.]]]

# デフォルトでは次元にかかわらずすべての要素の平均を計算する
print(ndarr1.mean())
# 出力結果
# 55.0

axis という名前付きのオプション引数

axisという引数は集計する軸を指定できる。

# axis=(0, 1, 2) はすべての軸で平均をとるので、axisを省略するのと同じ
print(ndarr1.mean(axis = (0, 1, 2)))
# 出力結果
# 55.0

# axis=0 は一番外側の軸で平均をとって、2つ目と3つ目の軸だけが残る2次元配列になる
print(ndarr1.mean(axis = 0))
# 出力結果
# [[ 51.  52.  53.]
#  [ 54.  55.  56.]
#  [ 57.  58.  59.]]

# axis=1 は2つ目の軸で平均をとって、1つ目と3つ目の軸だけが残る2次元配列になる
print(ndarr1.mean(axis = 1))
# 出力結果
# [[   4.    5.    6.]
#  [ 104.  105.  106.]]

# axis=2 は一番内側の軸で平均をとって、1つ目と2つ目の軸だけが残る2次元配列になる
print(ndarr1.mean(axis = 2))
# 出力結果
# [[   2.    5.    8.]
#  [ 102.  105.  108.]]

# axis=(0, 1) は1つ目と2つ目の軸で平均をとって、3つ目の軸だけが残る1次元配列になる
print(ndarr1.mean(axis = (0, 1)))
# 出力結果
# [ 54.  55.  56.]

print(ndarr1.mean(axis = (0, 2)))
# 出力結果
# [ 52.  55.  58.]

print(ndarr1.mean(axis = (1, 2)))
# 出力結果
# [   5.  105.]

1次元配列では axis=0 しかありえないので、意味がない。

print(ndarr1.mean(axis = 0))
# 出力結果
# 5.0

print(np.mean(ndarr1, axis = 0))
# 出力結果
# 5.0

関数の一覧

これらはだいたい似たような使い方ができる。

sum
合計
numpy.sum | NumPy v1.9 Manual
http://docs.scipy.org/doc/numpy-1.9.1/reference/generated/numpy.sum.html
mean
算術平均
numpy.mean | NumPy v1.9 Manual
http://docs.scipy.org/doc/numpy-1.9.1/reference/generated/numpy.mean.html
median
最頻値
numpy.median | NumPy v1.9 Manual
http://docs.scipy.org/doc/numpy-1.9.1/reference/generated/numpy.median.html
std
標準偏差
numpy.std | NumPy v1.9 Manual
http://docs.scipy.org/doc/numpy-1.9.1/reference/generated/numpy.std.html
var
分散
numpy.var | NumPy v1.9 Manual
http://docs.scipy.org/doc/numpy-1.9.1/reference/generated/numpy.var.html
max
最大値 -> 最大値・最小値に関する関数
min
最小値 -> 最大値・最小値に関する関数
argmax
最大値の要素のインデックス -> 最大値・最小値に関する関数
argmin
最小値の要素のインデックス -> 最大値・最小値に関する関数
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。