在 Julia 中,如何有效地将 1 维数组向量转换为 2 维数组(矩阵)?

Pok*_*eLu 2 julia

如前所述,我有一个一维矩阵向量,例如:

P_predefined = [[.3 .4 .2 .1], [.2 .3 .5 0.], [.1 0. .8 .1], [.4 0. 0. .6]]
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个2D矩阵,我尝试使用vcat,我希望它的行为像Python中的vstack,但它不起作用。

vcat(algorithm.predefinedP)
Run Code Online (Sandbox Code Playgroud)

它仍然返回一个向量

[[0.3 0.4 0.2 0.1], [0.2 0.3 0.5 0.0], [0.1 0.0 0.8 0.1], [0.4 0.0 0.0 0.6]] #Vector{Matrix{Float64}}
Run Code Online (Sandbox Code Playgroud)

我应该如何以正确的方式去做?

小智 7

Julia 1.9 有stack,可以通过 Compat 包在早期的 Julia 版本上使用。

\n
julia> using Compat\n\njulia> P_predefined = vec.([[.3 .4 .2 .1], [.2 .3 .5 0.], [.1 0. .8 .1], [.4 0. 0. .6]])\n4-element Vector{Vector{Float64}}:\n [0.3, 0.4, 0.2, 0.1]\n [0.2, 0.3, 0.5, 0.0]\n [0.1, 0.0, 0.8, 0.1]\n [0.4, 0.0, 0.0, 0.6]\n\njulia> stack(P_predefined)\n4\xc3\x974 Matrix{Float64}:\n 0.3  0.2  0.1  0.4\n 0.4  0.3  0.0  0.0\n 0.2  0.5  0.8  0.0\n 0.1  0.0  0.1  0.6\n\njulia> stack(P_predefined; dims=1)\n4\xc3\x974 Matrix{Float64}:\n 0.3  0.4  0.2  0.1\n 0.2  0.3  0.5  0.0\n 0.1  0.0  0.8  0.1\n 0.4  0.0  0.0  0.6\n
Run Code Online (Sandbox Code Playgroud)\n

注意:你的P_predefined是矩阵向量1xn,而不是向量。我在这里使用vec它们将它们转换为向量。

\n

  • `stack(vec, P_predefined)` 是另一种方法来做到这一点。 (3认同)