【发布时间】:2013-08-13 07:11:49
【问题描述】:
假设您有一个 Float64 类型的 3 维 Julia 数组 A,其中 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))找到了针对特定问题的临时解决方案。这是次优的,我希望得到更好的解决方案。
【问题讨论】:
标签: julia