请问,如何生成一个三维数组。类似于A[M, N, O]这样的矩阵。
生成之后矩阵乘法是怎样运算的,能否选择第一维和第二维进行乘法运算,第三维保持不变
另,假设我现在有一个二维数组,我怎么在第三维上repeat,把他变成三维的啊
生成多维数组的方式与二维数组类似,只需在调用诸如 zeros
、ones
等函数时将 dims
参数设置为多个整数即可,比如:
julia> zeros(2, 2, 2)
2×2×2 Array{Float64,3}:
... # 省略输出
三维数组在 Julia 中没有定义乘法,在数学上我记得好像也没有类似的定义。但你说的运算可以用索引实现:
julia> A = rand(2, 2, 2); B = rand(2, 2, 2); C = similar(A);
julia> let C = C
for i in 1:2 # 跳过维数检查
C[:, :, i] = A[:, :, i] + B[:, :, i]
end
C
end
2×2×2 Array{Float64,3}:
... # 省略输出
repeat
函数按理说应该可以像 zeros
函数那样用,但是我在直接这样做时出现了以下错误:
julia> A = rand(2, 2); repeat(A, 1, 1, 2)
ERROR: BoundsError: attempt to access 2×2×2 Array{Float64,3} at index [Base.OneTo(2), Base.OneTo(2)]
S
... # 省略栈追踪信息
而这样却可以正常运行:
julia> A = rand(2, 2); repeat(A, 1, 1, 1)
2×2×1 Array{Float64,3}:
[:, :, 1] =
0.697096 0.170141
0.551919 0.976475
这是一个相关的 issue,已经被解决了。