每 2 列切片矩阵
Slice matrix every 2 columns
我想弄清楚如何每 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
然后我想 return 3 个矩阵,每 2 列切片,即具有 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]
但这沿着每一列切片,但我想沿着每两列切片!
提前致谢。
这只是重塑。重塑共享内存(如视图),因此如果您希望它独立于原始 A
:
,您应该 copy
它
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
我想弄清楚如何每 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
然后我想 return 3 个矩阵,每 2 列切片,即具有 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]
但这沿着每一列切片,但我想沿着每两列切片!
提前致谢。
这只是重塑。重塑共享内存(如视图),因此如果您希望它独立于原始 A
:
copy
它
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