ジュリアの置換次元関数とその応用 permutedims
概要
ジュリアの組み込み関数 permutedims
は、ある意味転置行列の一般化として、多次元配列の次元を扱うのに有用だ。
コード
テンソルの次元変換
julia> A = reshape(Vector(1:8), (2,2,2))
2×2×2 Array{Int64, 3}:
[:, :, 1] =
1 3
2 4
[:, :, 2] =
5 7
6 8
julia> B = permutedims(A, (3, 1, 2))
2×2×2 Array{Int64, 3}:
[:, :, 1] =
1 2
5 6
[:, :, 2] =
3 4
7 8
テンソルはプログラミング的に有用だが、それだけ混乱を引き起こすこともある。特に画像に関連したディープラーニングタスクでこの関数は非常に役立つ。
文字列行列の転置行列
julia> A = ["a" "b" "c"
"d" "e" "f"]
2×3 Matrix{String}:
"a" "b" "c"
"d" "e" "f"
julia> A'
ERROR: MethodError: no method matching adjoint(::String)
julia> permutedims(A)
3×2 Matrix{String}:
"a" "d"
"b" "e"
"c" "f"
ご覧の通り、文字列の行列は '
を通じて行列の転置を取ることはできないが、permutedims
を用いて実質的に行列転置と同じ機能を使用することができる1。
環境
- OS: Windows
- julia: v1.11.1