python numpy矩阵乘法_高维Python-Numpy矩阵乘法

哈,只需一行即可完成:np.einsum('nmk,nkj->mj',A,B)。在

不要将变量命名为sum,而是重写sum中的内部版本。在

正如@Jaime指出的,对于这些尺寸的维度,循环实际上更快。事实上,基于map和sum的解决方案虽然更简单,甚至更慢:In [19]:

%%timeit

SUM = np.zeros([20,5])

for i in range(len(A)):

SUM += np.dot(A[i],B[i])

10000 loops, best of 3: 115 µs per loop

In [20]:

%timeit np.array(map(np.dot, A,B)).sum(0)

1000 loops, best of 3: 445 µs per loop

In [21]:

%timeit np.einsum('nmk,nkj->mj',A,B)

1000 loops, best of 3: 259 µs per loop

尺寸越大,事情就越不一样了:

^{pr2}$

以及:In [46]:

%%timeit

SUM = np.zeros([20,5])

for i in range(len(A)):

SUM += np.dot(A[i],B[i])

1 loops, best of 3: 191 ms per loop

In [47]:

%timeit np.array(map(np.dot, A,B)).sum(0)

1 loops, best of 3: 164 ms per loop

In [48]:

%timeit np.einsum('nmk,nkj->mj',A,B)

1 loops, best of 3: 451 ms per loop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值