Numpy 3darray矩阵乘法函数

时间:2016-06-10 00:53:24

标签: python numpy matrix vectorization multiplication

假设我有一个ndarray,W形状(m,n,n)和一个维度(m,n)的向量C.我需要以下列方式将这两者相乘

result = np.empty(m,n)
for i in range(m):
    result[i] = W[i] @ C[i]

如何在没有循环的情况下以矢量化方式执行此操作?

3 个答案:

答案 0 :(得分:1)

因为,您需要保持WC对齐的第一个轴,同时使用矩阵乘法从它们中丢失最后一个轴,我建议使用np.einsum一种非常有效的方法,如此 -

np.einsum('ijk,ik->ij',W,C

np.tensordotnp.dot没有保持轴对齐的功能以及np.einsum改进的地方。

答案 1 :(得分:0)

答案 2 :(得分:0)

使用np.tensordot

完成
ans=np.tensordot(W,C,axes=[2,1])[np.arange(m),:,np.arange(m)]
assert np.all(result==ans)