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

Ana*_*sid 15 vector julia

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

x = Vector{Float64}
append!(x, rand(10))
Run Code Online (Sandbox Code Playgroud)

结果是

`append!` has no method matching append!(::Type{Array{Float64,1}}, ::Array{Float64,1})
Run Code Online (Sandbox Code Playgroud)

谢谢.

小智 24

我对 Julia 有点陌生,在遇到类似错误后遇到了这个问题。要回答 Julia 1.2.0 版的原始问题,缺少的只是()

x = Vector{Float64}()
append!(x, rand(10))
Run Code Online (Sandbox Code Playgroud)

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

d = Vector{Dict}()
push!(d, Dict("a"=>1, "b"=>2))
Run Code Online (Sandbox Code Playgroud)

关于使用push!和的注意事项append!

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

推送单个项目:

a = Vector{Float64}()
push!(a, 1.0)
push!(a, 2.0)
Run Code Online (Sandbox Code Playgroud)

追加包含在数组中的项目:

a = Vector{Float64}()
append!(a, [1.0, 2.0])
Run Code Online (Sandbox Code Playgroud)


Vin*_*ynd 22

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

x = Vector{Float64}
typeof(x)  # DataType
Run Code Online (Sandbox Code Playgroud)

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

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

x = zeros(0)
append!( x, rand(10) )
Run Code Online (Sandbox Code Playgroud)


Dan*_*egh 9

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

Float64[] # Returns what you want
Array{Float64, 2}[] # Vector of Array{Float64,2}
Any[] # Can contain anything
Run Code Online (Sandbox Code Playgroud)


cha*_*ani 8

新答案,对于 Julia 1. 追加!已弃用,您现在需要使用 push!(array, element) 向数组添加元素

my_stuff = zeros()
push!(my_stuff, "new element")
Run Code Online (Sandbox Code Playgroud)