Python学習ノート-パラメータaxis=0,1,2...


Pythonプログラムでは、いくつかの多次元の配列やリストを操作する必要がある場合、操作関数にaxisというパラメータがあることがよくあります.では、このパラメータはどのように理解すればいいのでしょうか.axis=0/1/2はどのように区別しますか?次に、サンプルプログラムで学習します.
(1)まず2 x 3 x 4の3次元配列aを定義する.
a = [[[1,2 ,3 ,4 ],
      [5,6 ,7 ,8 ],
      [9,10,11,12]],
     [[13,14,15,16],
      [17,18,19,20],
      [21,22,23,24]]]

印刷a、出力は以下の通りです.
[[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], [[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]]]
(2)numpyのsum関数でaを加算し、axis=0を先に入力する.
sum_0 = np.sum(a,axis = 0)
print(sum_0)

出力結果は3 x 4の配列で、以下のようになります.
[[14 16 18 20] [22 24 26 28] [30 32 34 36]] 
(3)sum関数でaを加算し、axis=1を入力します.
sum_1 = np.sum(a,axis = 1)
print(sum_1)

出力結果は2 x 4の配列で、以下のようになります.
[[15 18 21 24] [51 54 57 60]] 
(4)最後にsum関数でaを加算し、axis=2を入力する.
sum_2 = np.sum(a,axis = 2)
print(sum_2)

出力結果は2 x 3の配列で、以下のようになります.
[[10 26 42] [58 74 90]] 
まとめると、1つのshapeがi*j*kの3次元配列aについて、関数function(a,axis=0)を実行すると、1番目のdimensionでfunction演算を行うことに相当し、他の次元の形状は変わらず、演算結果のshapeは元の配列aで1番目のdimensionのsahpe(すなわちj*k)を除去し、axis=1または2の場合と同様である.もちろんaxisの値は0/1/2に限らず,高次元配列に拡張することもできる.