gpt4 book ai didi

arrays - Julia,将 2d 数组合并到 3d 数组上?

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

我有一个 3d 数组,想复制底部的“切片”,即所有列的最后一行和 dim3,然后将其粘贴到原始 3d 数组的底部。出于某种原因,Julia 将我的“切片”视为 2 维数组而不是 3 维数组,并且不允许连接。尝试了几件事,没有运气。谢谢。 J MWE 在这里。

如果我从这个开始:

3×2×2 Array{Int64,3}:
[:, :, 1] =
1 4
2 5
3 6

[:, :, 2] =
1 4
2 5
3 6

我想以此结束:

3×2×2 Array{Int64,3}:
[:, :, 1] =
1 4
2 5
3 6
3 6
[:, :, 2] =
1 4
2 5
3 6
3 6
a, b = [1;2;3], [4;5;6]
c = hcat(a,b)
d = cat(c,c,dims=3)
size(d)
e = d[3,:,:]
f = hcat(d,3)
ERROR: DimensionMismatch("mismatch in dimension 1 (expected 3 got 1)")


最佳答案

方法是这样的:

julia> mat = reshape(repeat(1:6, 2), 3, 2, 2)
3×2×2 Array{Int64,3}:
[:, :, 1] =
1 4
2 5
3 6

[:, :, 2] =
1 4
2 5
3 6

julia> [mat; mat[3:3, :, :]]
4×2×2 Array{Int64,3}:
[:, :, 1] =
1 4
2 5
3 6
3 6

[:, :, 2] =
1 4
2 5
3 6
3 6

请注意,使用 3 会降低一维,但使用 3:3 会保留它。

另一方面,如果您有一个二维数组并想在其前面添加一个尺寸等于 1 的维度,那么您可以这样做:

julia> mat2 = mat[3, :, :]
2×2 Array{Int64,2}:
3 3
6 6

julia> reshape(mat2, 1, size(mat2)...)
1×2×2 Array{Int64,3}:
[:, :, 1] =
3 6

[:, :, 2] =
3 6

然后您可以将这样的矩阵与其他 3D 矩阵连接起来。

关于arrays - Julia,将 2d 数组合并到 3d 数组上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65749844/

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