在Julia中连接多维数组

时间:2018-10-26 22:28:27

标签: arrays multidimensional-array julia

我有一个多维数组Array{Array{Float64,3},1}的数组,我想要的是一个4维数组Array{Float64,4}

我已经查看了其他回复

但是catreshape的组合似乎并不能解决问题。

必须有一种惯用的方式……这是什么?

2 个答案:

答案 0 :(得分:3)

您的答案是正确且通用的。但是请注意,假设内部数组具有相同的大小(而不仅是相同的维数),还有以下更快的方法:

julia> matrix = [rand(1,2,3) for _ in 1:4]; # some test data

julia> @btime a = cat($matrix..., dims=4); # your solution
  11.519 μs (80 allocations: 3.83 KiB)

julia> @btime b = reshape(collect(Iterators.flatten($matrix)), (1,2,3,4)); # much faster solution
  611.960 ns (55 allocations: 2.27 KiB)

julia> a == b
true

答案 1 :(得分:0)

很抱歉打扰您,我在发布后很快就知道了

julia> typeof(matrix)
Array{Array{Float64,3},1}

julia> typeof(matrix[1])
Array{Float64,3}

julia> typeof(cat(matrix...,dims=4))
Array{Float64,4}