想象一下,您有一个AFloat64 类型的 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)). 这是次优的,我希望有更好的解决方案。