줄리아에서 벡터의 누적합, 누적곱 구하는 함수
코드
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