Pythonで転置行列を求める(ベクトルを「転置」するときはreshapeを使う)
2023.02.18
転置行列は行列に T をつけるだけです。
import numpy as np
A = np.array([[1, 2], [4, 5]])
B = np.array([[3, 1, 5], [1, 1, 1], [0, 1, 2]])
C = A.T
print(C)
# [[1 4]
# [2 5]]
D = B.T
print(D)
# [[3 1 0]
# [1 1 1]
# [5 1 2]]
ベクトルの転置
ベクトルに転置という概念はありませんが、ベクトルを行列とみなして、その転置行列を求めたいときはどうすればいいでしょうか? NumPy の array はベクトルと行列の書き方に違いがあるため、ベクトルに T をつけてもなにも起きません。
import numpy as np
A = np.array([1, 2])
B = np.array([3, 1, 5])
C = A.T
print(C)
# [1 2]
D = B.T
print(D)
# [3 1 5]
ベクトルを行列に変換する必要があります。これは NumPy の reshape で行います。1 番目の引数に変換したい配列(ベクトル、行列)を入れて、2 番目の引数に行列の次元を入れます。
2 次元ベクトルを (1, 2) 行列にするときは reshape(A, (1, 2)) とします。
import numpy as np
A = np.array([5, 9])
C = np.reshape(A, (1, 2))
D = C.T
print(C)
# [[5 9]]
print(D)
# [[5]
# [9]]
一度行列にすれば、その行列を転置できます。