我試圖弄清楚如何每 2 列對矩陣進行切片。例如,如果我們有
A=[[1 2 3 4 5 6];[7 8 9 10 11 12]]
2×6 Matrix{Int64}:
1 2 3 4 5 6
7 8 9 10 11 12
然后我想回傳每 2 列切片的 3 個矩陣,即具有 3 個矩陣的 3 維陣列,
2×2×3 Array{Int64, 3}:
[:, :, 1] =
1 2
7 8
[:, :, 2] =
3 4
9 10
[:, :, 3] =
5 6
11 12
我嘗試過的一件事是 eachslice 函式,
collect(eachslice(A,dims=2))
6-element Vector{SubArray{Int64, 1, Matrix{Int64}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, true}}:
[1, 7]
[2, 8]
[3, 9]
[4, 10]
[5, 11]
[6, 12]
但是這個切片沿著每一列,但我想沿著每兩列切片!
提前致謝。
uj5u.com熱心網友回復:
那只是重塑。重塑共享記憶體(如視圖),因此copy如果您希望它獨立于原始記憶體,您應該這樣做A:
julia> reshape(A, 2, 2, 3)
2×2×3 Array{Int64, 3}:
[:, :, 1] =
1 2
7 8
[:, :, 2] =
3 4
9 10
[:, :, 3] =
5 6
11 12
但如果你真的想要,你也可以將其表示為索引:
julia> A[:, [1:2 3:4 5:6]]
2×2×3 Array{Int64, 3}:
[:, :, 1] =
1 2
7 8
[:, :, 2] =
3 4
9 10
[:, :, 3] =
5 6
11 12
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456427.html
