将Array {Array {Float64},1}转换为Array {Float64,2}和反之的最佳方法

3
考虑一个数组的数组。
julia> a
2-element Array{Array{Float64,1},1}:
 [1.0, 2.0, 3.0]
 [4.0, 5.0, 6.0]

我希望将a转换为Array{Float64,2}数组。
2×3 Array{Float64,2}:
 1.0  2.0  3.0
 4.0  5.0  6.0

就像这样。

我发现一个解决方案是hcat(a...)'

julia> hcat(a...)'
2×3 Adjoint{Float64,Array{Float64,2}}:
 1.0  2.0  3.0
 4.0  5.0  6.0

这里的类型是Adjoint{Float64,Array{Float64,2}}。但是对于我的问题,我只需要Array{Float64,2}类型。经过一些计算后,我需要将其转换回数组的数组。

我想知道,最好的方法是什么。

提前感谢。

2个回答

3

您是否正在寻找vcat(a'...)它可以实现您所需的功能。


3

您可以做:

julia> reduce(vcat, transpose.(a))
2×3 Array{Float64,2}:
 1.0  2.0  3.0
 4.0  5.0  6.0

或者例如(这不检查向量的维度是否匹配)
julia> [v[i] for v in a, i in axes(a[1], 1)]
2×3 Array{Float64,2}:
 1.0  2.0  3.0
 4.0  5.0  6.0

回去的方法更简单:
julia> b = reduce(vcat, transpose.(a))
2×3 Array{Float64,2}:
 1.0  2.0  3.0
 4.0  5.0  6.0

julia> copy.(eachrow(b))
2-element Array{Array{Float64,1},1}:
 [1.0, 2.0, 3.0]
 [4.0, 5.0, 6.0]

或者

julia> [b[i, :] for i in axes(b, 1)]
2-element Array{Array{Float64,1},1}:
 [1.0, 2.0, 3.0]
 [4.0, 5.0, 6.0]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接