Я хотел бы создать пустой вектор и добавить к нему массив в Julia. Как это сделать?
x = Vector{Float64}
append!(x, rand(10))
приводит к
`append!` has no method matching append!(::Type{Array{Float64,1}}, ::Array{Float64,1})
Спасибо.
Я хотел бы создать пустой вектор и добавить к нему массив в 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)
(но будьте осторожны, он не инициализирован: он содержит произвольные значения) или zeros(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. добавь! устарела, теперь вам нужно использовать push! (массив, элемент) для добавления элементов в массив
my_stuff = zeros()
push!(my_stuff, "new element")
Я несколько новичок в Юлии и столкнулся с этим вопросом после получения аналогичной ошибки. Чтобы ответить на первоначальный вопрос для 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!:Согласно справке Джулии, push! используется для добавления отдельных элементов в коллекцию, а append! добавляет коллекцию элементов в коллекцию. Итак, следующие фрагменты кода создают один и тот же массив:
Нажмите отдельные элементы:
a = Vector{Float64}()
push!(a, 1.0)
push!(a, 2.0)
Добавить элементы, содержащиеся в массиве:
a = Vector{Float64}()
append!(a, [1.0, 2.0])