2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonで行列の転置

Posted at

#転置行列

行列転置の方法を備忘録しておく。

test.py

A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
I = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]

#転置行列
AT = list(zip(*A))
#[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
IT = list(zip(*I))
#[(1, 0, 0), (0, 1, 0), (0, 0, 1)]

以下は処理内容についてわからなければどうぞ。

#謎のアスタリスク(スター)*
print文内の*(アスタリスク、スター)は積ではなく展開を意味しており、たとえばさっきのAに対して

test.py

A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

print(A)
#[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

print(*A)
#[1, 2, 3] [4, 5, 6] [7, 8, 9]

というふうにリスト等の中身をばらそうねという指示になる。
Aが「2次元行列を1つ渡した」のであれば*Aは「1次元配列を3つ渡した」ということになろう。

ところで物理界隈では"*"をスターと呼んでたけど情報屋さんは何と呼ぶのがメジャーなんだろう。

#zip()
zip()関数は与えられた複数のリストやタプルをそれぞれインデックスごとに組み合わせし直してタプルで返してくる。

python.test.py
name = ("hoge", "hogege", "hogee")
yo = (20, 30, 40)
location = ("hiroshima", "fuchu", "abashiri")

data = list(zip(name, yo, location))

for i in range(len(name)):
	print(data[i])
#('hoge', 20, 'hiroshima')
#('hogege', 30, 'fuchu')
#('hogee', 40, 'abashiri')

そんなわけでlist(zip(*A))でAを転置できているのだ。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?