gpt4 book ai didi

arrays - 每 2 列切片矩阵

转载 作者:行者123 更新时间:2023-12-05 03:26:19 27 4
gpt4 key购买 nike

我想弄清楚如何每 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]

但这沿着每一列切片,但我想沿着每两列切片!

提前致谢。

最佳答案

那只是 reshape 。 reshape 共享内存(如 View ),因此如果您希望它独立于原始 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

关于arrays - 每 2 列切片矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71756969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com