julia の行列入れ替え (転置行列); transpose() と permutedims()
julia で 2次元行列を入れ替えて、転置行列を求める方法は2つあるようです。transpose() と permutedims() です。
permutedims() は、多次元配列でも使えるようですので、汎用性は高いようです。
下記に例を記載します。
数字のみの2次元行列
julia> test_array = [1 3 ; 2 4 ; 3 6 ] 3×2 Array{Int64,2}: 1 3 2 4 3 6 julia> transpose(test_array) 2×3 Array{Int64,2}: 1 2 3 3 4 6 julia> permutedims(test_array, [2,1]) 2×3 Array{Int64,2}: 1 2 3 3 4 6 julia> permutedims(test_array, [2,1]) == transpose(test_array) true
どちらも結果は一緒です。
文字列を含む2次元行列
文字列が入ると、transpose() はエラーが出ます。
julia> test_array2 = [1 3 ; 2 4 ; 3 6 ; "sakura" "neko" ]
4×2 Matrix{Any}:
1 3
2 4
3 6
"sakura" "neko"
julia> permutedims(test_array2, [2,1])
2×4 Matrix{Any}:
1 2 3 "sakura"
3 4 6 "neko"
julia> transpose(test_array2)
2×4 transpose(::Matrix{Any}) with eltype Any:
Error showing value of type LinearAlgebra.Transpose{Any, Matrix{Any}}:
ERROR: MethodError: no method matching transpose(::String)
Closest candidates are: ...(略)
残念ながら、DataFrame, JuliaDB の table は、列に名前が付いているので、入れ替えができないようです。