在 Julia 中将水平数组转换为垂直数组

wee*_*era 6 julia

假设我有一个像这样的 3 元素数组:

A = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我如何将其转换为:

B = [1; 2; 3]
Run Code Online (Sandbox Code Playgroud)

在朱莉娅?

Prz*_*fel 2

transpose创建一个Adjoint实际拥有视图的对象

\n
julia> A = [1, 2, 3];\n\njulia> A'\n1\xc3\x973 LinearAlgebra.Adjoint{Int64,Array{Int64,1}}:\n 1  2  3\n
Run Code Online (Sandbox Code Playgroud)\n

用collect 包裹它会产生一个实际的水平向量:

\n
julia> collect(A')\n1\xc3\x973 Array{Int64,2}:\n 99  2  3\n
Run Code Online (Sandbox Code Playgroud)\n

然而,您需要了解,在 Julia 中,一维Vectors 始终是垂直的,而向量也可以用二维矩阵表示,其中一维等于一:

\n
julia> B=[1 2 3]\n1\xc3\x973 Array{Int64,2}:\n 1  2  3\n\njulia> C = collect(B')\n3\xc3\x971 Array{Int64,2}:\n 1\n 2\n 3\n
Run Code Online (Sandbox Code Playgroud)\n

vec最后,每个都可以使用函数或运算符转换为标准向量[:]

\n
julia>  A == B[:] == C[:] == vec(B) == vec(C) == @view(C[:]) == @view(B[:])\ntrue\n
Run Code Online (Sandbox Code Playgroud)\n