朱莉娅:附加到一个空矢量

时间:2015-02-15 08:02:45

标签: vector julia

我想创建一个空向量并在Julia中附加一个数组。我该怎么做?

x = Vector{Float64}
append!(x, rand(10))

结果

`append!` has no method matching append!(::Type{Array{Float64,1}}, ::Array{Float64,1})

感谢。

4 个答案:

答案 0 :(得分:20)

您的变量x不包含数组而是类型。

x = Vector{Float64}
typeof(x)  # DataType

您可以将数组创建为Array(Float64, n) (但要注意,它是未初始化的:它包含任意值)或zeros(Float64, n), 其中n是所需的大小。

由于Float64是默认值,我们可以将其删除。 你的例子变成了:

x = zeros(0)
append!( x, rand(10) )

答案 1 :(得分:9)

您可以通过在[]前面键入类型来初始化任何类型的空Vector。像:

Float64[] # Returns what you want
Array{Float64, 2}[] # Vector of Array{Float64,2}
Any[] # Can contain anything

答案 2 :(得分:4)

我对朱莉娅有点陌生,在遇到类似错误后遇到了这个问题。要回答Julia版本1.2.0的原始问题,()缺少的全部:

x = Vector{Float64}()
append!(x, rand(10))

此解决方案(与x=zeros(0)不同)也适用于其他数据类型。例如,要创建一个空的向量来存储字典,请使用:

d = Vector{Dict}()
push!(d, Dict("a"=>1, "b"=>2))

关于使用push!append!的说明:

根据Julia的帮助,push!用于将单个项目添加到集合,而append!用于将项目集合添加到集合。因此,以下代码段创建了相同的数组:

推送单个项目:

a = Vector{Float64}()
push!(a, 1.0)
push!(a, 2.0)

追加数组中包含的项目:

a = Vector{Float64}()
append!(a, [1.0, 2.0])

答案 3 :(得分:2)

Julia 1的新答案。追加!已弃用,您现在需要使用push!(array,element)将元素添加到数组中

my_stuff = zeros()
push!(my_stuff, "new element")