!!! サイト改修中のため表示が乱れる場合があります(1月末頃まで) !!!
未分類

16-21. Pythonのaxisを図で理解する

やること

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))
12
axis=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]

まとめ

これらの図がイメージできれば迷うことはないでしょう!

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

タイトルとURLをコピーしました