Numpy dot() 函数等效

这个问题纯粹是出于好奇。假设我有 2 个矩阵a和b.


a=np.array([[1, 2],

            [2, 3],

            [4, 5]])


b=np.array([[1, 2, 3, 4],

            [2, 3, 4, 5]])

要找到他们的点积,我可能会使用np.dot(a,b). 但是有没有其他方法可以做到这一点?我不要求任何其他别名功能。但也许是另一种方式来做到这一点np.sum(a*b, axis=1) (我知道这行不通,这只是一个例子)。如果我有一个 3-D 矩阵呢?还有其他方法可以计算它们的点积吗(不使用任何函数)?


提前致谢!


人到中年有点甜
浏览 118回答 1
1回答

慕婉清6462132

In [66]: a=np.array([[1, 2],    ...:             [2, 3],    ...:             [4, 5]])    ...:     ...: b=np.array([[1, 2, 3, 4],    ...:             [2, 3, 4, 5]])    ...:     ...:             In [67]: np.dot(a,b)Out[67]: array([[ 5,  8, 11, 14],       [ 8, 13, 18, 23],       [14, 23, 32, 41]])In [68]: a@bOut[68]: array([[ 5,  8, 11, 14],       [ 8, 13, 18, 23],       [14, 23, 32, 41]])In [69]: np.einsum('ij,jk',a,b)Out[69]: array([[ 5,  8, 11, 14],       [ 8, 13, 18, 23],       [14, 23, 32, 41]])广播乘法和求和:In [71]: (a[:,:,None]*b[None,:,:]).sum(axis=1)Out[71]: array([[ 5,  8, 11, 14],       [ 8, 13, 18, 23],       [14, 23, 32, 41]])In [72]: (a[:,:,None]*b[None,:,:]).shapeOut[72]: (3, 2, 4)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python