数组的矩阵乘法

ht4b089n  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(384)

例如,我有一个矩阵, A = np.array([[1,0],[0,1]]) 以及表格的排列 B = np.array([[1,2],[3,4],[5,6]]) . 我想要数组中每个数组的矩阵乘法 B 根据矩阵 A .
我做了一个循环,像这样

  1. C = []
  2. for b in B:
  3. C.append(np.matmul(A,b))
  4. C=np.array(C)

出[]:

  1. array([[1, 2],
  2. [3, 4],
  3. [5, 6]])

但我知道这个周期很耗时。有更好的方法吗?

siotufzp

siotufzp1#

当你用矩阵乘法做一些有趣的事情时, einsum 可以帮助澄清发生了什么。

  1. In [40]: np.einsum('ij,kj->ki',A,B)
  2. Out[40]:
  3. array([[1, 2],
  4. [3, 4],
  5. [5, 6]])

在这里,我们计算了 j 尺寸和推杆 B's 第一维度是结果中的第一维度。普通的matmul是 ij,jk->ik . 从这一点我们可以看出,在另一个答案中需要两个转置。

  1. (A@B.T).T
4jb9z9bj

4jb9z9bj2#

两件事:首先,你可以使用正规矩阵乘法和转置。第二,你可以使用 @ 在python中请求矩阵乘法。
所以试试看

  1. (A@B.T).T

或同等地

  1. (B@A.T)

相关问题