Numpy:【axis】が分からないなら、この絵を見て!


サマリ

  • axisは集計関数を実行する時に指定する
  • どちら方向にまとめる(集計する)か
    • axis=0 …… 縦方向、行方向
    • axis=1 …… 横方向、列方向

前提

方向として捉える

axis=0

axis=0のイメージ
  • 縦方向にまとめる
  • axis=0は縦方向と覚えれてしまう
    • “行""列"と呼ぶので行方向が最初のaxis=0
    • 横縦より縦横の方がしっくりくるので縦方向が最初のaxis=0
  • (2,3)から(3, )
    • (2,3)のインデックス番号を考えるとインデックス番号0が2でインデックス番号1が3
    • axis=0は1次元目の「2」の方向にまとめている
    • 「2」の方向にまとめてた結果、「2」はなくなり「3」が残る=(3, )

axis=1

axis=1のイメージ
  • 横方向にまとめる
  • そのあとになぜか回転する(2つ目の矢印)
    • ここが混乱の元
    • 最初の内は回転していることを意識する
  • (2,3)から(2, )
    • (2,3)のインデックス番号を考えるとインデックス番号0が2でインデックス番号1が3
    • axis=1は2次元目の「3」の方向にまとめている
    • 「3」の方向にまとめてた結果、「3」はなくなり「2」が残る=(2, )
  • もし、(2,3)から(1,2)だとしたら
    • 1が残るルールを追加する必要が出てくる
    • axis=0と同じような説明はできなくなりルールが複雑になる

ここまでのまとめ

  • 集計の方向
    • axis=0は行方向(縦方向)
    • axis=1は列方向(横方向)
  • 次元の変化
    • axis=0、axis=1のどちらも指定した次元に向かってまとめている
    • 結果、その方向の次元はなくなり、残りの次元が残る
  • axis=1
    • イメージだとはコロッと回転させているように見える
    • この回転は意識しておく
  • 以降でaxisの理解を深める関連記事を紹介

関連記事紹介の前に

知識を広げる方向性

  • よくない考え方がある
    • イメージを膨らませようとすること
      • axis=1の時につじつま合わせのような回転がある
      • 回転するのは何はなぜ?
      • 深く考えてしまうのはよくない
  • よくない理由
    • イメージは分かりやすくするために利用しただけ
      (勉強の初期段階ではとても役に立つはず)
    • ndarrayをすべてイメージで理解できない
  • 限界の例
    • イメージはせいぜい3次元まで
    • 4次元、5次元、…とイメージは作れない
    • 画像処理の畳み込みは6次元(im2colのこと)
  • つまり、イメージでの理解から卒業して違った理解へ進む

着目するところ

  • ndarray(NumPy配列)の形状
    • shape、shape[0]、多次元の表記変化、形状変換
  • 次元
    • np.ndim、次元追加、削除
  • 集計関数
    • 実際に使って慣れる

紹介する関連記事

ndarray(NumPy配列)の形状や次元

  • ndarray(NumPy配列)の形状や次元について理解
  • 形状
    • shapeを使いこなせるようになりたい
    • shapeを使うと実際のデータを見なくてもndarrayがイメージできるようになる
  • 次元
    • AI学習データは多次元が基本
    • 次元を理解することはとても有意義
    • axisに指定するも次元

慣れておきたい(2, )表記

  • (2, )表記の理解
    • これが不思議な表記に見えるならndarray(NumPy配列)の慣れが不足
    • (2, )は実は分かりやすい表示
    • (2, )と(1,2)の違い

集計関数について

  • 集計関数に慣れる
    • 基本は2次元配列の集計
    • 多次元配列の集計も理解する


Posted by futa