Numpy:【axis】が分からないなら、この絵を見て!
目次
サマリ
- axisは集計関数を実行する時に指定する
- どちら方向にまとめる(集計する)か
- axis=0 …… 縦方向、行方向
- axis=1 …… 横方向、列方向
前提
- np.shape
方向として捉える
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

- 横方向にまとめる
- そのあとになぜか回転する(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次元配列の集計
- 多次元配列の集計も理解する

