やること
Python の numpy(○なむぱい、×なんぴー)は優秀な数値計算モジュールであり、配列の合計値を求める際は for文で要素を1つ1つ処理するよりも np.sum() のメソッドで処理したほうが良いです。
np.sum() の他にも、
- np.mean(), np.average() 平均値
- np.median() 中央値
- np.max() 最大値
- np.min() 最小値
- np.std() 標準偏差
- np.var() 分散
があります。
さて、いずれも多次元配列においてどの軸で処理するかという「axis=」のオプションがありますが、「axis=1ってどの方向だっけ?」と迷う方もいると思います。今回は axis をマスターしたいと思います。
実行環境
WinPython3.6をおすすめしています。
WinPython - Browse /WinPython_3.6/3.6.7.0 at SourceForge.net
Portable Scientific Python 2/3 32/64bit Distribution for Windows
Google Colaboratoryが利用可能です。

Google Colab
配列の用意
適当な3次元配列を用意しました。
import numpy as np
a = np.array([[[0, 1], [0, 1], [0, 1], [0, 1]],
[[0, 1], [0, 1], [0, 1], [0, 1]],
[[0, 1], [0, 1], [0, 1], [0, 1]]])次のようなイメージです。

基本編
axisなし
axis が指定されない場合は全要素の和が返ります。
print(np.sum(a))12axis=0
print(np.sum(a, axis=0))[[0 3]
[0 3]
[0 3]
[0 3]]
axis=1
print(np.sum(a, axis=1))[[0 4]
[0 4]
[0 4]]
axis=2
print(np.sum(a, axis=2))[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
応用編
実は axis=(0, 1) のように複数軸を指定することもできます。
axis=(0, 1)
print(np.sum(a, axis=(0, 1)))[ 0 12]
axis=(0, 2)
print(np.sum(a, axis=(0, 2)))[3 3 3 3]
axis=(1, 2)
print(np.sum(a, axis=(1, 2)))[4 4 4]
まとめ
これらの図がイメージできれば迷うことはないでしょう!
