为了账号安全,请及时绑定邮箱和手机立即绑定

Numpy dot() 函数等效

Numpy dot() 函数等效

人到中年有点甜 2021-08-14 21:33:23
这个问题纯粹是出于好奇。假设我有 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 矩阵呢?还有其他方法可以计算它们的点积吗(不使用任何函数)?提前致谢!
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

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@b

Out[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,:,:]).shape

Out[72]: (3, 2, 4)


查看完整回答
反对 回复 2021-08-14
  • 1 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号