1. ホーム
  2. python

[解決済み] Pythonで行列の転置 [重複] を行う

2022-04-28 09:35:08

質問

Pythonで行列の転置関数を作ろうとしているのですが、なかなかうまくいきません。 例えば

theArray = [['a','b','c'],['d','e','f'],['g','h','i']]

という関数が必要です。

newArray = [['a','d','g'],['b','e','h'],['c', 'f', 'i']]

つまり、この2次元配列を列と行で印刷する場合、行が列に、列が行になるようにしたいのです。

ここまで作ったが、うまくいかない

def matrixTranspose(anArray):
    transposed = [None]*len(anArray[0])
    for t in range(len(anArray)):
        for tt in range(len(anArray[t])):
            transposed[t] = [None]*len(anArray)
            transposed[t][tt] = anArray[tt][t]
    print transposed

解決方法は?

Python 2:

>>> theArray = [['a','b','c'],['d','e','f'],['g','h','i']]
>>> zip(*theArray)
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]

Python 3です。

>>> [*zip(*theArray)]
[('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]