使用计时测试,我发现它的更高性能的成长Vector{Array{Float64}}使用对象push!比它只需使用一个Array{Float64}对象,要么hcat或vcat.但是,在计算完成后,我需要将结果对象更改Array{Float64}为进一步分析.有没有一种方法可以工作,无论尺寸?例如,如果我生成Vector的Arrays可通过
u = [1 2 3 4
1 3 3 4
1 5 6 3
5 2 3 1]
uFull = Vector{Array{Int}}(0)
push!(uFull,u)
for i = 1:10000
push!(uFull,u)
end
Run Code Online (Sandbox Code Playgroud)
我可以像这样进行转换:
fill = Array{Int}(size(uFull)...,size(u)...)
for i in eachindex(uFull)
fill[i,:,:] = uFull[i]
end
Run Code Online (Sandbox Code Playgroud)
但请注意,这要求我知道数组是矩阵(二维).如果它是三维的,我需要另一个:,所以这对任意尺寸都不起作用.
请注意,我还需要一个"逆变换"的形式(除了第一个由完整数组的最后一个索引索引)在任意维度,我目前有
filla = Vector{Array{Int}}(size(fill)[end])
for i in 1:size(fill)[end]
filla[i] = fill[:,:,i]'
end
Run Code Online (Sandbox Code Playgroud)
我假设第一次转换的方法也可能解决第二次转换.