メモ:Juliaで多次元配列を1次元配列にしたい

qiita.com

ここで書かれている通り,JuliaはColumn-major orderで多次元配列を1次元配列に直す.例を出すとこんな感じ.

julia> A=[1 2 3 4 5;6 7 8 9 10]
2×5 Matrix{Int64}:
 1  2  3  4   5
 6  7  8  9  10

julia> A[:]
10-element Vector{Int64}:
  1
  6
  2
  7
  3
  8
  4
  9
  5
 10

これをRow-major orderにしたい.

Iterators.flatten(eachrow(A)) |> collect
10-element Vector{Int64}:
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10

これでできました.(...) |> (...)は左の結果を右の第一引数に入れるだけです.なので,

julia> A=[1 2 3 4 5;6 7 8 9 10]
2×5 Matrix{Int64}:
 1  2  3  4   5
 6  7  8  9  10

julia> _A=eachrow(A)
2-element RowSlices{Matrix{Int64}, Tuple{Base.OneTo{Int64}}, SubArray{Int64, 1, Matrix{Int64}, Tuple{Int64, Base.Slice{Base.OneTo{Int64}}}, true}}:
 [1, 2, 3, 4, 5]
 [6, 7, 8, 9, 10]

julia> collect(Iterators.flatten(_A))
10-element Vector{Int64}:
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10

も同様の処理となります. ↓参考 docs.julialang.org

追記

matsueushi.github.io

↑こちらを見つけ, eachrow()の後のvcat(_A ...)でもできました