python - ndarray的矩阵乘法
问题描述
例如,我有一个矩阵A = np.array([[1,0],[0,1]])
和 ndarray 形式B = np.array([[1,2],[3,4],[5,6]])
。我想要矩阵的每个数组的矩阵B
乘法A
。
我做了一个for循环,像这样
C = []
for b in B:
C.append(np.matmul(A,b))
C=np.array(C)
出去[]:
array([[1, 2],
[3, 4],
[5, 6]])
但我知道这个循环很耗时。有更好的方法吗?
解决方案
当你用矩阵乘法维度做有趣的事情时,einsum
可以帮助澄清发生了什么。
In [40]: np.einsum('ij,kj->ki',A,B)
Out[40]:
array([[1, 2],
[3, 4],
[5, 6]])
在这里,我们正在对维度进行乘积之j
和,并将B's
第一个维度放在结果中。普通的 matmul 将是ij,jk->ik
. 从那里我们可以看到另一个答案中需要两个转置。
(A@B.T).T
推荐阅读
- python - 音频文件RMS幅度的Python直方图
- python - 二维图中的 4 个变量?
- ambari - 【Ambari】构建安装Ambari 2.7.5
- javascript - 动态对象键...无法在字符串上创建属性
- android - 以编程方式单击主页按钮并在颤动中关闭屏幕
- pagination - Scrapy不遵循分页链接
- python - Ubuntu 中的 Python 调试器:当 Python 代码中有 sys.stdin 时如何使用 PDB?
- node.js - Node Js PDF Phantom ENOENT
- azure-devops - Azure Artifacts - 某些用户访问组织范围的源时出现 401 未经授权的错误
- go - 为什么我的所有 goroutine 不执行?需要解释