想象一下,您有一个A
Float64 类型的 3 维 Julia 数组,其中size(A) = (2, 3, 3)
.
如何使用二维数组一次分配这个数组的块?例如,假设我想A[1, :, :]
成为单位矩阵。我会考虑做这样的事情:
A = Array(Float64, 2, 3, 3)
A[1, :, :] = eye(3)
当我这样做时,我收到以下错误:
ERROR: argument dimensions must match
in setindex! at array.jl:592
我知道这是因为size(A[1, :, :]) = (1, 3, 3)
,但我不知道如何 1)让这个切片(3, 3)
非常eye(3)
适合或 2)使eye(3)
也(1, 3, 3)
符合切片的形状A
。
有什么建议么?
编辑 12:51 AM PST 8-13-13
我学到了两个新东西:
- 如果我
A
沿其他两个维度中的任何一个进行切片,则结果是一个二维数组,而不是一个前导维度为 1 的 3 维数组。 - 我通过做
A[1, :, :] = reshape(eye(3), (1, 3, 3))
. 这是次优的,我希望有更好的解决方案。