logo

ジュリアで空の配列を作成する方法 📂ジュリア

ジュリアで空の配列を作成する方法

コード

サイズ指定

julia> empty = Array{Float64, 2}(undef, 3, 4)
3×4 Array{Float64,2}:
 3.39519e-313  3.18299e-313  4.66839e-313  1.061e-313
 4.03179e-313  5.51719e-313  1.6976e-313   4.24399e-314
 2.97079e-313  4.66839e-313  7.00259e-313  5.0e-324

上のコードを実行すると、空の配列が作成される。たまに1.76297e-315のような変な値が入っているように見えるが、これは0に非常に近い値で、初期化には大きな問題がない。

Array{X, Y}(undef, ...)はデータ型XY次元配列を、該当するデータ型の未定値でサイズ...だけ埋めた配列になる。ここでのポイントはundefだ。

可変配列

一次元配列の場合、括弧の中に何も入れずに、簡単に空の配列を作ることができる。

julia> empty = Array{Float64, 1}()
Float64[]

julia> empty = Array{Float64, 2}()
ERROR: MethodError: no method matching Array{Float64,2}()
Closest candidates are:
  Array{Float64,2}(::UndefInitializer, ::Int64, ::Int64) where T at boot.jl:408
  Array{Float64,2}(::UndefInitializer, ::Int64...) where {T, N} at boot.jl:412
  Array{Float64,2}(::UndefInitializer, ::Tuple{Int64,Int64}) where T at boot.jl:416
  ...
Stacktrace:
 [1] top-level scope at REPL[85]:1

しかし、同じ方法で二次元配列を作ろうとすると、上述のようにMethodErrorが発生する。もちろん自然な二次元配列ではないが、一次元配列の一次元配列を作るような形で空の配列を作ることは可能だが、速度の面ではネイティブな文法をそのまま使うことを推奨する。

julia> empty = Array{Array{Float64, 1}, 1}()
Array{Float64,1}[]

もっと簡単な方法

下のように波括弧を使うと、もっと簡単に配列を作ることができる。

julia> empty = Float64[]
Float64[]

julia> empty = Array{Float64, 1}[]
Array{Float64,1}[]

julia> empty = Array{Float64, 2}[]
Array{Float64,2}[]

環境

  • OS: Windows
  • julia: v1.5.0