Вы можете использовать SplitApplyCombine.jl, и есть функция splitdimsview
, которая делает именно то, что вы просите:
julia> a = reshape(1:30, 2, 3, 5);
julia> b = splitdimsview(a, 3)
5-element SplitDimsArray{SubArray{Int64,2,Base.ReshapedArray{Int64,3,UnitRange{Int64},Tuple{}},Tuple{Base.Slice{Base.OneTo{Int64}},Base.Slice{Base.OneTo{Int64}},Int64},true},1,(3,),Base.ReshapedArray{Int64,3,UnitRange{Int64},Tuple{}}}:
[1 3 5; 2 4 6]
[7 9 11; 8 10 12]
[13 15 17; 14 16 18]
[19 21 23; 20 22 24]
[25 27 29; 26 28 30]
Обратите внимание, что объект не Vector{Matrix}
, а пользовательский объект (но с теми же характеристиками, кроме вида).