如何在Julia中初始化一个空的二维数组?

bec*_*cko 12 multidimensional-array julia

m = []
Run Code Online (Sandbox Code Playgroud)

初始化一个空的数组1.我想初始化一个空的数组2(稍后我将附加值.这可能吗?

Ant*_*llo 21

从Julia 1.0开始,您可以使用:

m = Array{Float64}(undef, 0, 0)
Run Code Online (Sandbox Code Playgroud)

对于(0,0) - 尺寸二维矩阵存储Float64值和更多通用:

m = Array{T}(undef, a, b, ...,z)
Run Code Online (Sandbox Code Playgroud)

对于(a,b,...,z)-size多维矩阵(其内容是类型的垃圾T).

  • 我建议你在你的例子中用 `Float64` 替换 `T`。否则人们可能会复制过去并出错。 (2认同)

Dan*_*etz 8

尝试:

m = reshape([],0,2)
Run Code Online (Sandbox Code Playgroud)

要么,

m = Array{Float64}(0,2)
Run Code Online (Sandbox Code Playgroud)

显式定义类型的第二个选项应生成更快的代码.

一位评论者短暂建议使用Matrix()0x0矩阵和Matrix(0,2)0x2矩阵.

  • 第二个将不再适用于1.0!您应该在回答中真正提及这一点。此外,您在1.0中缺少建议的操作方式(请参阅Antonello的答案)。 (4认同)
  • 这里:http://docs.julialang.org/en/release-0.4/stdlib/arrays/#constructors (2认同)

tdy*_*tdy 4

从 Julia 1.8 开始

\n

现在创建空数组要简单得多:

\n
\n

现在可以使用方括号内的多个分号创建空的n维数组。

\n
\n
julia> m = [;;]\n# 0\xc3\x970 Matrix{Any}\n
Run Code Online (Sandbox Code Playgroud)\n
julia> m = [;;;]\n# 0\xc3\x970\xc3\x970 Array{Any, 3}\n
Run Code Online (Sandbox Code Playgroud)\n
\n

请注意,这只是用于构造未初始化的语法糖Array

\n
\n

julia/test/syntax.jl#L3143-L3146

\n
@test []    == Array{Any}(undef, 0)\n@test [;]   == Array{Any}(undef, 0)\n@test [;;]  == Array{Any}(undef, 0, 0)\n@test [;;;] == Array{Any}(undef, 0, 0, 0)\n
Run Code Online (Sandbox Code Playgroud)\n
\n