繁体   English   中英

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

[英]Best way to convert Array{Array{Float64},1} to Array{Float64,2} and vise versa

考虑数组的数组

julia> a
2-element Array{Array{Float64,1},1}:
 [1.0, 2.0, 3.0]
 [4.0, 5.0, 6.0]

我想将a转换为数组{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}。 经过一些计算,我需要将其转换回数组数组。 我想知道,什么是最好的方法?

提前致谢。

您在寻找vcat(a'...)它在做什么吗。

你可以做:

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM