PythonとJavaScriptで転置をするときの違い

2025/01/31に公開

# before
| 1 2 3 |
| 4 5 6 |
→
# before
| 1 4 |
| 2 5 |
| 3 6 |
import numpy as np
def transpose(matrix):
    arr = np.array(matrix)
    r,c = arr.shape
    return arr.T.reshape((c,r)).tolist()

Python の場合 numpy を使えば比較的楽に実装可能。
reshape で値を取得し、転置を行なってからreshapeすることで値を取得することが可能となる。

pythonの場合、

const transpose = matrix => matrix[0].map((_,c) => matrix.map(r => r[c]))

Python のように パッケージがないので自分でそのような処理を実装可能。

例えば2行3列の配列であれば転置後は3行2列の配列となる。
そのため、ループとして繰り返す回数は3回となる。 matrix[0] で 3列分のデータを取得することができるが、ここが実際にほしいのはその試行回数であるので _,c 引数はインデックスを取得している。
その後、そのmapの内部でインデックスがcに該当するものだけを呼べば3行2列のリストとなる。

Discussion