php, python, goで二次元配列の転置

最近ちょっと配列操作のアルゴリズムが気になったのでちょっとここでまとめてみます。

PHP

function transverse_matrix($array){
    return call_user_func_array('array_map',array_merge(array(null),$array));
}

何が起こっているかはわかりませんが、PHPの場合これで転置できます。 ただ速さは測定していません。。。

python

numpyだとめっちゃシンプルです。

array = [[1, 2], [3, 4]]
array_transverse = np.array(array).T

zip 関数を使うのもあるそう。

l_2d = [[0, 1, 2], [3, 4, 5]]
l_2d_t = [list(x) for x in zip(*l_2d)]

go

go言語でも以下のように.T()で転置できるみたいです。便利ですね。。。!

x := []float64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
A := mat.NewDense(3, 4, x)

B := A.T()
matPrint(B)
// ⎡1  5   9⎤
// ⎢2  6  10⎥
// ⎢3  7  11⎥
// ⎣4  8  12⎦

参考ページ

PHP で2次元配列を転置する。

Pythonリスト型の二次元配列の行と列を入れ替える(転置)

Go + Gonum を使った行列計算まとめ