Я хотел бы создать пустой вектор и добавить к нему массив в 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])