logo

줄리아에서 벡터의 누적합, 누적곱 구하는 함수 📂줄리아

줄리아에서 벡터의 누적합, 누적곱 구하는 함수

코드

cumsum

함수 이름은 cumulative누적 sum의 줄임말이다. 반복자를 입력으로 받아 누적합을 계산한다. 즉 벡터를 넣어도 되지만, 그냥 레인지range를 넣어도 된다. 2차원 이상이면 합을 계산할 차원을 입력해야한다.

julia> cumsum(1:10)
10-element Vector{Int64}:
  1
  3
  6
 10
 15
 21
 28
 36
 45
 55

julia> A = repeat(1:5, outer=(1,5))
5×5 Matrix{Int64}:
 1  1  1  1  1
 2  2  2  2  2
 3  3  3  3  3
 4  4  4  4  4
 5  5  5  5  5

julia> cumsum(A, dims=1)
5×5 Matrix{Int64}:
  1   1   1   1   1
  3   3   3   3   3
  6   6   6   6   6
 10  10  10  10  10
 15  15  15  15  15

julia> cumsum(A, dims=2)
5×5 Matrix{Int64}:
 1   2   3   4   5
 2   4   6   8  10
 3   6   9  12  15
 4   8  12  16  20
 5  10  15  20  25

당연하게도 합이 잘 정의되지 않은 대상끼리는 누적합을 계산할 수 없다.

julia> cumsum(Any[1, 1.0])
2-element Vector{Any}:
 1
 2.0

julia> cumsum(A[1, 1.0; "1"])
ERROR: MethodError: no method matching typed_vcat(::Matrix{Int64}, ::Int64, ::Float64, ::String)

cumprod

cumsum과 비슷하게 누적곱을 계산한다. 곱을 계산하므로 문자열을 입력으로 받을 수 있다.

julia> cumprod(1:5)
5-element Vector{Int64}:
   1
   2
   6
  24
 120

julia> cumprod("abcde")
5-element Vector{String}:
 "a"
 "ab"
 "abc"
 "abcd"
 "abcde"

julia> A
5×5 Matrix{Int64}:
 1  1  1  1  1
 2  2  2  2  2
 3  3  3  3  3
 4  4  4  4  4
 5  5  5  5  5

julia> cumprod(A, dims=1)
5×5 Matrix{Int64}:
   1    1    1    1    1
   2    2    2    2    2
   6    6    6    6    6
  24   24   24   24   24
 120  120  120  120  120

julia> cumprod(A, dims=2)
5×5 Matrix{Int64}:
 1   1    1    1     1
 2   4    8   16    32
 3   9   27   81   243
 4  16   64  256  1024
 5  25  125  625  3125

환경

  • OS: Windows11
  • Version: Julia 1.11.3