This pattern comes up often for me (eg analyizing simulations, posterior predictive checks). I have a solution, but I wonder if there is a better one. MWE:
"""
Collect arrays in the argument such that
`stack1(v)[1, fill(:, ndims(v[i]))...] == v[i]`
"""
stack1(v) =  reshape(transpose(hcat(map(vec, v)...)), :, size(first(v))...)
g = (reshape((1:6)*i, 2, 3) for i in 1:10);
s = stack1(g);
so that
julia> s[1, :, :]
2×3 Array{Int64,2}:
 1  3  5
 2  4  6
julia> s[2, :, :]
2×3 Array{Int64,2}:
 2  6  10
 4  8  12
I do things like stack1(map(f, as, bs)) where as and bs are different and mapslices would not work.