Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで行列を転置する4つの方法を徹底解説!コード例付き

行列の転置とは?

行列の転置(transpose)とは、行列の列と行を入れ替える操作のことです。転置を行うと、元の行列の列が行になり、行が列になります。

具体例を使って理解しましょう。次のような元の行列「x」があるとします。

x = [[1,2],[3,4],[5,6]]

この行列「x」には2つの列があり、1つ目の列には 1, 3, 5、2つ目の列には 2, 4, 6 が含まれています。

この行列を転置すると、列が行に入れ替わります。転置後の行列は次のようになります。

x1 = [[1, 3, 5],[2, 4, 6]]

このように、転置後の新しい行列「x1」は、元の行列とは値の配置が異なる形で整理されます。

以下では、Pythonで行列を転置する4つの方法を順番に紹介します。

方法1:ネストしたループ(二重ループ)を使う

最も基本的な方法は、forループを二重にネストして、要素を一つずつ入れ替える方法です。処理の流れが分かりやすく、転置の仕組みを理解するのに適しています。

# 元の行列
x = [[1,2],[3,4],[5,6]]
result = [[0, 0, 0], [0, 0, 0]]

# 行を反復処理
for i in range(len(x)):
    # 列を反復処理
    for j in range(len(x[0])):
        result[j][i] = x[i][j]

for r in result:
    print(r)

実行結果

[1, 3, 5]
[2, 4, 6]

方法2:ネストしたリスト内包表記を使う

リスト内包表記を使うと、同じ処理をより簡潔に記述できます。Pythonらしい書き方なので、頻繁に活用するとコードの可読性が向上します。

# 元の行列
x = [[1,2],[3,4],[5,6]]
result = [[x[j][i] for j in range(len(x))] for i in range(len(x[0]))]

for r in result:
    print(r)

実行結果

[1, 3, 5]
[2, 4, 6]

方法3:zip関数を使う

組み込み関数のzip()とアンパック演算子(*)を組み合わせると、非常に短いコードで転置を実現できます。map()で各タプルをリストに変換している点に注意してください。

# 元の行列
x = [[1,2],[3,4],[5,6]]
result = list(map(list, zip(*x)))

for r in result:
    print(r)

実行結果

[1, 3, 5]
[2, 4, 6]

方法4:NumPyライブラリを使う

NumPyは、大規模な多次元配列を効率的に操作するために開発された配列処理パッケージです。本格的な数値計算や大量のデータを扱う場合には、NumPyを使うのが最も簡単かつ高速です。

import numpy as np

# 元の行列
x = [[1,2],[3,4],[5,6]]
print(np.transpose(x))

実行結果

[[1 3 5]
 [2 4 6]]

まとめ

Pythonで行列を転置する方法として、以下の4つを紹介しました。

  • 二重ループ: 処理の流れが分かりやすく、学習に最適
  • リスト内包表記: 簡潔でPythonらしい書き方
  • zip関数: 最もシンプルに記述できる
  • NumPy: 大規模データや本格的な数値計算に最適

小さな行列であればどの方法でも問題ありませんが、パフォーマンスが求められる場面ではNumPyの使用をおすすめします。用途に応じて最適な方法を選びましょう。

  1. Pythonで行列の転置を求めるプログラム

    この記事では、与えられた問題に対する解法とアプローチについて詳しく解説します。 問題文 ある行列が与えられたとき、その転置を同じ行列に格納し、結果を表示する必要があります。 行列の転置とは、行を列に、列を行に入れ替えたものです。言い換えれば、行列Aの転置は、要素A[i][j]をA[j][i]と入れ替えることで得られます。 実装例 N = 4 def transpose(A): for i in range(N): for j in range(i+1, N): A[i][j], A[j][i] = A[j][i], A[i][j] # ドライ

  2. Pythonで行列を転置する方法をわかりやすく解説

    行列の転置(transpose)とは、行列の行と列を入れ替える操作のことです。Pythonでは、行列は「同じ要素数を持つリストのリスト」として表現されます。ここでは、Pythonを使って行列を転置する基本的な方法を解説します。Pythonにおける行列の表現たとえば、3行2列の行列は次のようなリストオブジェクトで表せます。X = [[12,7], [4 ,5], [3 ,8]]この行列を転置すると、2行3列の行列になります。ネストしたループ(二重ループ)で転置する方法最も基本的な方法は、for文を入れ子にして行と列のインデックスを入れ替えることです。以下のコードでは、外側のループ