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 は、列に名前が付いているので、入れ替えができないようです。

B! LINE