ITエンジニア ノイのブログ

ITエンジニアのノイです。 YouTubeで ITエンジニアのお勉強という学習用の動画を公開しています。チャンネル登録お願いします!https://m.youtube.com/channel/UCBKfJIMVWXd3ReG_FDh31Aw/playlists

NumPyでの転置とaxisの理解

NumPyはPythonで科学計算を行うための優れたライブラリであり、行列の操作や数値計算に便利です。特に、転置とaxisの理解は、データ解析や機械学習の実装において重要な概念です。

転置(Transpose)とは何か

転置とは、行列の行と列を入れ替える操作のことです。NumPyでは、transpose()関数を使用して転置を行うことができます。具体的なコード例を見てみましょう。

import numpy as np

# 行列の作成
matrix = np.array([[1, 2, 3], [4, 5, 6]])

# 転置
transposed_matrix = np.transpose(matrix)

print(transposed_matrix)

出力結果:

array([[1, 4],
       [2, 5],
       [3, 6]])

transpose()関数は、行列を転置した新しい行列を返します。元の行列は変更されません。

また、x.Tという形で転置することもできます。

x = np.array([[1.0, 2.0, 3.0], [4.0, 3.0, 2.0]])
print(x)
print(x.T)

出力結果:

[[1. 2. 3.]
 [4. 3. 2.]]
[[1. 4.]
 [2. 3.]
 [3. 2.]]

axis(軸)とは何か

axis(軸)は、NumPyの多次元配列において、データの操作や集計を行うための方向を指定するために使用されます。NumPyの関数の多くは、axisパラメータを受け取り、指定された軸方向に操作を行います。

NumPyの多次元配列において、軸は0から始まる整数で表されます。次元ごとに異なる軸を指定することができます。以下に、axisパラメータを使用したNumPy関数のいくつかの例を示します。

  • np.sum(array, axis=0):指定した軸方向に配列の要素を合計します。
  • np.mean(array, axis=1):指定した軸方向に配列の平均値を計算します。
  • np.max(array, axis=2):指定した軸方向に配列の最大値を見つけます。

これらの関数を使うことで、NumPy配列の特定の軸方向での操作や集計が容易になります。

axisの違い

x = np.array([[1.0, 2.0, 3.0],[4.0, 3.0, 2.0]])
print(x)
print(np.max(x, axis=0))
print(np.max(x, axis=1))

出力結果:

[[1. 2. 3.]
 [4. 3. 2.]]
[4. 3. 3.]
[3. 4.]

転置とaxisの関係

転置とaxisは、異なる操作ですが、一部の場合においては関連しています。特に、多次元配列において軸の順序を変更することで、転置と同様の結果を得ることができます。

import numpy as np

# 多次元配列の作成
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

# 軸の順序を変更した結果を得る
transposed_arr = arr.transpose((1, 0, 2))

print(transposed_arr)

出力結果:

array([[[ 1,  2,  3],
        [ 7,  8,  9]],

       [[ 4,  5,  6],
        [10, 11, 12]]])

この例では、元の配列 arr は次元が (2, 2, 3) であり、0番目の軸は2つの行列、1番目の軸は2つの行、2番目の軸は3つの要素を持っています。transpose()関数に引数として (1, 0, 2) を指定することで、軸の順序を変更しています。結果として得られる transposed_arr の次元は (2, 2, 3) となり、0番目の軸と1番目の軸が入れ替わっていることがわかります。

このように、transpose()関数を使うことで転置を行うだけでなく、axisパラメータを使って軸の順序を変更することもできます。この場合、異なる操作ではありますが、同じ結果を得ることができます。

NumPyの多次元配列を操作する際には、axisパラメータの理解が重要です。軸を指定することで、特定の方向に対して操作や集計を行うことができます。また、transpose()関数を使えば、転置を行うことができますが、axisパラメータを使って軸の順序を変更することもできます。

最後に

この記事では、NumPyにおける転置とaxisの基本的な概念と使い方について解説しました。これらの概念を理解し、適切に使いこなすことで、データ解析や機械学習の実装において効率的な操作を行うことができます。

youtu.be