首页 > 解决方案 > numpy 点积的爱因斯坦符号

问题描述

如何使用爱因斯坦符号编写以下点积?

import numpy as np
LHS = np.ones((5,20,2))
RHS = np.ones((20,2))
np.sum([
    np.dot(LHS[:,:,0], RHS[:,0]),
    np.dot(LHS[:,:,1], RHS[:,1]),
], axis=0)

标签: numpynumpy-einsum

解决方案


那将是——

np.einsum('ijk,jk->i',LHS,RHS)

或者tensordot-

np.tensordot(LHS,RHS,axes=((1,2),(0,1)))

并与np.dot-

LHS.reshape(LHS.shape[0],-1).dot(RHS.ravel())

推荐阅读