有没有之间的差异Array和Vector?
typeof(Array([1,2,3]))
Vector{Int64}
typeof(Vector([1,2,3]))
Vector{Int64}
Run Code Online (Sandbox Code Playgroud)
两者似乎都创造了相同的东西,但它们并不相同:
Array == Vector
false
Array === Vector
false
Run Code Online (Sandbox Code Playgroud)
那么,实际上有什么区别呢?
Bog*_*ski 14
不同之处在于它Vector是一维的Array,因此当您编写例如时,Vector{Int}它是 的简写Array{Int, 1}:
julia> Vector{Int}
Array{Int64,1}
Run Code Online (Sandbox Code Playgroud)
当您调用构造函数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})
Run Code Online (Sandbox Code Playgroud)
还要注意以下效果:
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
Run Code Online (Sandbox Code Playgroud)
所以基本上调用Vector(x)会复制x. 通常在代码中,您可能会简单地编写copy(x).
一般规则是它Array是一个参数类型,它有两个用大括号给出的参数:
eltype)ndims)有关详细信息,请参阅https://docs.julialang.org/en/v1/manual/arrays/。
小智 5
Vector是一维的别名Array。你可以在 Julia REPL 中看到:
julia> Vector
Array{T, 1} where T
julia> Vector{Int32}
Array{Int32, 1}
Run Code Online (Sandbox Code Playgroud)
类似地,aMatrix是一个二维数组:
julia> Matrix
Array{T,2} where T
Run Code Online (Sandbox Code Playgroud)