Vector 朱莉娅:附加到一个空向量

Vector 朱莉娅:附加到一个空向量,vector,julia,Vector,Julia,我想创建一个空向量,并在Julia中向其附加一个数组。我该怎么做 x = Vector{Float64} append!(x, rand(10)) 导致 `append!` has no method matching append!(::Type{Array{Float64,1}}, ::Array{Float64,1}) 谢谢。您的变量x不包含数组,而是类型 x = Vector{Float64} typeof(x) # DataType 您可以将数组创建为array(Float64

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

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

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

谢谢。

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

x = Vector{Float64}
typeof(x)  # DataType
您可以将数组创建为
array(Float64,n)
(但请注意,它是未初始化的:它包含任意值)或
零(Float64,n)
, 其中
n
是所需的大小

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

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

通过在[]前面键入类型,可以初始化任何类型的空向量。比如:

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

新答案,朱莉娅1。追加已弃用,您现在需要使用推送!(数组,元素)将元素添加到数组中

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

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

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

d = Vector{Dict}()
push!(d, Dict("a"=>1, "b"=>2))
关于使用
push
追加:
根据Julia的帮助,
push用于将单个项目添加到集合中,而
用于追加将项目集合添加到集合中。因此,以下代码段创建相同的数组:

推送单个项目:

a = Vector{Float64}()
push!(a, 1.0)
push!(a, 2.0)
附加数组中包含的项:

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

如何将其扩展到二维阵列?例如,我有许多类型的数组{Float64,2},我想将其追加到同一类型的空白数组中,但是我得到了错误'error:MethodError:
append没有与append匹配的方法!(::数组{Float64,2},::数组{Float64,2})。运行代码示例会导致错误:
julia>my_stuff=zeros();推(我的东西,“新元素”)错误:MethodError:没有方法匹配推送!(::数组{Float64,0},::字符串)最接近的候选对象是:push!(::Any,::Any,::Any)在abstractarray.jl:2064推送!(::Any,::Any,::Any,::Any…)在abstractarray.jl:2065推送!(::数组{Any,1},::Any)位于Array.jl:862。。。Stacktrace:[1]无的顶级作用域:0
@Evgeny您使用的是Julia 1.0吗?我不确定这在其他版本上是否也能起到同样的作用,尤其是早期版本。您是否尝试过自己运行代码
zeros()
创建一个Float类型的数组,并尝试向Float添加字符串。我的版本是1.1.1。你也可以看到代码中的错误。谢谢你的回答!这确实是两者之间的区别!推!这让我大吃一惊:)
a = Vector{Float64}()
append!(a, [1.0, 2.0])