Разница в том, что Vector
является одномерным Array
, поэтому при написании, например, Vector{Int}
это сокращение от Array{Int, 1}
:
julia> Vector{Int}
Array{Int64,1}
Когда вы вызываете конструкторы Array([1,2,3])
и Vector([1,2,3])
они внутренне переводятся на тот же вызов Array{Int,1}([1,2,3])
, как вы передали им вектор.
Вы увидите разницу, если захотите передать массив, который не является одномерным:
julia> Array(ones(2,2))
2×2 Array{Float64,2}:
1.0 1.0
1.0 1.0
julia> Vector(ones(2,2))
ERROR: MethodError: no method matching Array{T,1} where T(::Array{Float64,2})
Также обратите внимание на эффект:
julia> x=[1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> Vector(x)
3-element Array{Int64,1}:
1
2
3
julia> Vector(x) === x
false
Таким образом, по сути, вызов Vector(x)
делает копию x
. Обычно в коде вы, вероятно, просто пишете copy(x)
.
. Общее правило состоит в том, что Array
- это тип параметров c, в котором два параметра заданы в фигурных скобках:
- первый тип элемента (вы можете получить к нему доступ с помощью
eltype
) - второй - размер массива (вы можете получить к нему доступ с помощью
ndims
)
Подробнее см. https://docs.julialang.org/en/v1/manual/arrays/.