主题说明了一切。
我只想这样做,但对我来说,分配新数组效率很低。
julia> a = reshape(1:30, 2, 3, 5)
Run Code Online (Sandbox Code Playgroud)
进入
julia> b = [a[:, :, i] for i in 1:5]
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法将类型从 转换Array{T, 3}为Array{Array{T, 2}, 1}?
您可以使用 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]
Run Code Online (Sandbox Code Playgroud)
请注意,该对象不是Vector{Matrix}自定义对象(但具有相同的特征,除了它是一个视图)。