简而言之,因为我们根本不需要对A进行reshape,最重要的是,乘法不会创建像A[:, np.newaxis] * B这样的临时数组。相反,einsum只需沿着行对乘积进行求和。...即使是这个小的例子,einsum也要快三倍。
如何使用einsum
关键是为输入数组的轴和我们想要输出的数组选择正确的标签。
函数使我们可以选择两种方式之一执行此操作:使用字符串或使用整数列表。...为简单起见,我们将坚持使用字符串(这也是更常用的)。
一个很好的例子是矩阵乘法,它将行与列相乘,然后对乘积结果求和。...],
[1,1,0],
[1,1,1]])
我们的矩阵乘法np.einsum(‘ij,jk->ik’, A, B)大致如下:
?...如果我们想控制输出的样子,我们可以自己选择输出标签的顺序。例如,’ij,jk->ki’为矩阵乘法的转置。
现在,我们已经知道矩阵乘法是如何工作的。