logo

줄리아에서 행렬을 칼럼별로 정규화하는 법 📂줄리아

줄리아에서 행렬을 칼럼별로 정규화하는 법

개요

줄리아에서 행렬정규화를 간단히 하는 팁을 소개한다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