python - 如何使用 numpy 将 N 个向量乘以 N 个矩阵?
问题描述
我有一个M
shape矩阵和一个shape(N, L)
的 3D 张量。我想得到形状矩阵where 。我可以用 for 循环来做,但效率很低,我想用一个或几个操作来做,这样它就可以在 CUDA 上并行运行。P
(N, L, K)
V
(N, K)
V[i] = M[i] @ P[i]
我试着像这样乘它
V = M @ P
但这会产生一个 3D 张量,其中V[i, j] = M[j] @ P[i]
.
np.diagonal(M @ P).T
基本上是我想要的,但是这样计算会浪费很多计算。
解决方案
你可以使用np.einsum
:
>>> M = np.random.rand(5, 2)
>>> P = np.random.rand(5, 2, 3)
>>> V = np.einsum('nl,nlk->nk', M, P)
>>> V.shape
(5, 3)
推荐阅读
- azure-data-factory - Azure 数据工厂:使用复制活动设置复制文件数量的限制
- javascript - 将标记添加到传单中的用户位置
- ckeditor - Typo3 关闭并开始一个新段落
在每个
新闻扩展的正文中 - openmdao - 什么时候适合使用元模型而不是昂贵的分析?
- c - 在 Linux(RedHat) 中,C 函数 malloc_stats() 显示与 /proc/ 不同的值
/stat 常驻内存大小 - javascript - 一起使用 scroll-ID DOM-event
- python - Pandas:将年度数据转换为十年数据
- flutter - 在 null 上调用了方法“_mulFromInteger”
- javascript - 是否有 document.execCommand 的替代品?(或者使用 document.execCommand 是否安全?)
- android - Google Purchases.subscriptions api:paymentState null 是什么意思?