Reputation: 2330
I would like to create an empty vector and append to it an array in Julia. How do I do that?
x = Vector{Float64}
append!(x, rand(10))
results in
`append!` has no method matching append!(::Type{Array{Float64,1}}, ::Array{Float64,1})
Thanks.
Upvotes: 53
Views: 117444
Reputation: 3734
A summary of various possibilities to create an empty float array and to "append":
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)
Upvotes: 0
Reputation: 720
I am somewhat new to Julia and came across this question after getting a similar error. To answer the original question for Julia version 1.2.0, all that is missing are ()
:
x = Vector{Float64}()
append!(x, rand(10))
This solution (unlike x=zeros(0)
) works for other data types, too. For example, to create an empty vector to store dictionaries use:
d = Vector{Dict}()
push!(d, Dict("a"=>1, "b"=>2))
push!
and append!
:According to the Julia help, push!
is used to add individual items to a collection, while append!
adds an collection of items to a collection. So, the following pieces of code create the same array:
Push individual items:
a = Vector{Float64}()
push!(a, 1.0)
push!(a, 2.0)
Append items contained in an array:
a = Vector{Float64}()
append!(a, [1.0, 2.0])
Upvotes: 50
Reputation: 2510
New answer, for Julia 1. append! is deprecated, you now need to use push!(array, element) to add elements to an array
my_stuff = zeros()
push!(my_stuff, "new element")
Upvotes: 8
Reputation: 716
You can initialize an empty Vector of any type by typing the type in front of []. Like:
Float64[] # Returns what you want
Array{Float64, 2}[] # Vector of Array{Float64,2}
Any[] # Can contain anything
Upvotes: 15
Reputation: 32351
Your variable x
does not contain an array but a type.
x = Vector{Float64}
typeof(x) # DataType
You can create an array as Array(Float64, n)
(but beware, it is uninitialized: it contains arbitrary values) or zeros(Float64, n)
,
where n
is the desired size.
Since Float64
is the default, we can leave it out.
Your example becomes:
x = zeros(0)
append!( x, rand(10) )
Upvotes: 58