我有一个 3 维数组
x = rand(6,6,2^10)
我想将沿第三维的每个矩阵乘以一个向量。有没有比以下更干净的方法来做到这一点:
y = rand(6,1)
z = zeros(6,1,2^10)
for i in 1:2^10
z[:,:,i] = x[:,:,i] * y
end
最佳答案
如果您正在处理矩阵,考虑 x
可能是合适的。作为矩阵向量而不是 3D 数组。那么你可以做
x = [rand(6,6) for _ in 1:2^10]
y = [rand(6)]
z = x .* y
z
现在是向量的向量。如果
z
是预先分配的,那就是z .= x .* y
而且,如果你想要它真的很快,请使用
StaticArrays
的向量。using StaticArrays
x = [@SMatrix rand(6, 6) for _ in 1:2^10]
y = [@SVector rand(6)]
z = x .* y
这在我的计算机上显示了 10 倍的加速,运行时间为 12us。
关于 Julia 沿dim 乘以每个矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43801699/