줄리아에서 행렬을 칼럼별로 정규화하는 법
개요
줄리아에서 행렬의 정규화를 간단히 하는 팁을 소개한다1. 근본적으로 행렬을 행별, 열별로 스칼라곱하는 법과 eachcol()
함수, LinearAlgebra
모듈의 norm()
함수를 섞어 쓴 것에 불과하지만, 한 줄만에 끝나고 쓸 일이 많아 암기해두면 도움이 된다.
코드
julia> using LinearAlgebra
julia> X = reshape(1:15, 5, :)
5×3 reshape(::UnitRange{Int64}, 5, 3) with eltype Int64:
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
위와 같이 주어진 행렬 X
가 있을 때, 칼럼별로 행렬을 정규화normalize하는 건 딱 X ./ norm.(eachcol(X))'
한 줄로도 가능하다. 실행 자체와 실제로 잘 정규화되었는지 확인한 결과는 다음과 같다.
julia> Z = X ./ norm.(eachcol(X))'
5×3 Matrix{Float64}:
0.13484 0.330289 0.376192
0.26968 0.385337 0.410391
0.40452 0.440386 0.444591
0.53936 0.495434 0.47879
0.6742 0.550482 0.512989
julia> norm.(eachcol(Z))
3-element Vector{Float64}:
1.0
1.0
1.0
전체 코드
using LinearAlgebra
X = reshape(1:15, 5, :)
Z = X ./ norm.(eachcol(X))'
norm.(eachcol(Z))
환경
- OS: Windows
- julia: v1.9.0