줄리아에서 배열 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
환경
- OS: Windows
- julia: v1.5.0