🦧

newaxisを解説

2023/09/17に公開2

今回はnumpyのnewaxisについて解説します。

newaxisとは?

newaxisは

  • 配列に次元を追加するためのインデックス

です。

具体的な使い方をコードで見ていきましょう。

使い方

少し難しいですが、まずは「次元を追加する」という意味を掴みましょう。

import numpy as np

# 1次元配列
arr1 = np.array([1, 2, 3])
print(arr1)
print("Shape:", arr1.shape)
Shape: (3,)
# [1 2 3]
# Shape: (3,)

# 行ベクトルに変換(次元を追加)
row_vector = arr1[np.newaxis, :]
print("Row vector:", row_vector)
print("Shape:", row_vector.shape)

# 出力: Row vector: [[1 2 3]]
# 出力: Shape: (1, 3)

# 列ベクトルに変換(次元を追加)
col_vector = arr1[:, np.newaxis]
print("Column vector:", col_vector)
print("Shape:", col_vector.shape)
# 出力:
# Column vector:
# [[1]
#  [2]
#  [3]]
# 出力: Shape: (3, 1)

出力

[1 2 3]
Shape: (3,)
--------------------
Row vector: [[1 2 3]]
Shape: (1, 3)
--------------------
Column vector: 
[[1]
 [2]
 [3]]
Shape: (3, 1)

newaxisとはその名の通り、新しい軸(axis)という意味です。
arr1[np.newaxis, :]というコードによって、Shape: (3,)の配列がShape: (1, 3)に変化しました。1次元配列の手前に軸が追加されて、2次元配列へ変化したのです。

次のイメージ図で見てみましょう。

このように、1次元のベクトルにnewaxisで軸を追加することで、2次元の行列へ変化します。
3次元への変化も同様です。

嬉しいこと

多次元に変化することで、要素の追加やnumpyの行列演算が行えるようになります。
特に行列演算は機械学習などの分野で重要な操作なので、newaxisが使われることも多いです。

  • 要素の追加

  • 行列積

補足

[np.newaxis, :]では、右側の:でスライスを行うこともできます。
例えば[np.newaxis, 0:2]とすると、行列の1番目と2番目の要素が抜き出された上で次元が追加されます。

まとめ

newaxisは

  • 配列に次元を追加するためのインデックス

でした。
[np.newaxis, :]の書き方によって、今の要素を行要素にするか列要素にするか指定することができます。
最初は「(3,)が(1,3)に変化する」のように、形状で考えるとわかりやすいと思います。

それでは今回はここまでです!最後まで読んでいただきありがとうございました。

Discussion

yKesamaruyKesamaru

素晴らしい記事をありがとうございます😊

うちはいつも脳内で「行…列…」と変換してます💦 文字で説明すると中々難しいですよね。

yuuyuu

嬉しいご感想ありがとうございます🙏
次元はややこしいですよね、、、

仰る通り文字にすると難しかったので、図を使ってイメージ化してみました。
参考になっていれば幸いです!