줄리아에서 배열 Flatten 하는 법

줄리아에서 배열 Flatten 하는 법

코드

vec() 함수를 쓰면 된다.

julia> A = rand(0:9, 3,4)
3×4 Array{Int64,2}:
 6  8  7  3
 2  9  3  2
 5  0  6  7

julia> vec(A)
12-element Array{Int64,1}:
 6
 2
 5
 8
 9
 0
 7
 3
 6
 3
 2
 7

사람이 생각하기로, 사람에게 보이기로는 똑같이 1차원 배열인데 타입상 2차원 배열이라 에러를 내는 경우도 이 방법으로 해결하면 된다. 다음 두 명령은 정확히 같은 배열로 보이지만 $\mathbb{N}^{10 \times 1}$ 행렬이냐 $\mathbb{N}^{10 }$ 벡터냐의 차이가 있다.

julia> b = rand(0:9, 10,1)
10×1 Array{Int64,2}:
 4
 8
 0
 4
 7
 4
 4
 2
 4
 7

julia> vec(b)
10-element Array{Int64,1}:
 4
 8
 0
 4
 7
 4
 4
 2
 4
 7

실제 flatten() 함수

사실은 Base.Iterators 에 진짜 이름이 플래튼인 flatten() 이 구현되어 있다. 실행 결과는 다음과 같으며, 솔직히 쓰고 싶지 않을 것이다. 엄밀히 말해서는 배열을 바꿔준다기보다는 반복문 등에 들어갈 때 반복자Iterators로써 사용할 때 필요할 수도 있다. 솔직히 필요 없다.

julia> c = rand(0:9, 3,3)
3×3 Matrix{Int64}:
 7  7  4
 9  3  8
 4  4  5

julia> Iterators.flatten(c)
Base.Iterators.Flatten{Matrix{Int64}}([7 7 4; 9 3 8; 4 4 5])

julia> vec(c)
9-element Vector{Int64}:
 7
 9
 4
 7
 3
 4
 4
 8
 5

환경

댓글