Julia:附加到空向量

问题描述 投票:0回答:5

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

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

结果

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

谢谢。

vector julia
5个回答
56
投票

您的变量

x
不包含数组,而是包含类型。

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

您可以创建一个数组作为

Array(Float64, n)
(但要注意,它是未初始化的:它包含任意值)或
zeros(Float64, n)
, 其中
n
是所需的大小。

由于

Float64
是默认值,因此我们可以将其省略。 你的例子变成:

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

50
投票

我对 Julia 有点陌生,在遇到类似的错误后遇到了这个问题。要回答 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])

15
投票

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

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

8
投票

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

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

0
投票

创建空浮点数组和“追加”的各种可能性的摘要:

x = Float64[] 
x = zeros()
x = zeros(0)
x = ones()
x = ones(0)
x = [0.][1:0]

a = [0., 10.]

append!(x, a)
push!(x, a...)
x = [x..., a...]
x = vcat(x, a)
© www.soinside.com 2019 - 2024. All rights reserved.