python - 寻找在 numpy 中做一系列矩阵向量产品的“正确”方法
问题描述
我有一个 3Dnumpy
数组vecs
。 vecs
有形状[M,N,3]
。也就是说,vecs
是 3 元素向量的 MxN 集合。我正在寻找一种 pythonic (numpythonic?) 方法来获取每个向量与单个 3x3 矩阵的矩阵乘积mat
。换句话说,我想要一种干净的方式来做到这一点:
>>> for k in range(vecs.shape[0]):
>>> for j in range(vecs.shape[1]):
>>> vecs[k,j] = np.dot(mat, vecs[k,j])
有什么办法可以做到这一点?
解决方案
您的dot
, 可以表示einsum
为:
res[k,j,:] = np.einsum('ab,b->a',mat,vecs[k,j,:])
并概括为与整个数组一起工作
res = np.einsum('ab,kjb->kja',mat,vecs)
推荐阅读
- reactjs - Sheet js xlsx读取日期值返回错误的日期
- react-native - 无法在我的 twiilo 聊天中取消订阅推送通知(React Native)
- java - UsernamePasswordCredential Microsoft Graph API 不起作用
- javascript - 如何根据状态更改 className 并在功能组件中重新渲染
- angular - 使用特定的谷歌帐户登录时,Angular 7 应用程序不断使浏览器崩溃。有谁知道如何修理它?
- php - 您的连接不是私有的 试图打开我的网站而不把 www 放在前面时出错
- flutter - 如何在flutter Curvednavigationbar中导航不同的页面?
- azure - 如何使用应用注册和 azure cli 命令获取所有 azure 应用注册并查看机密的到期日期?
- python - PyQt5 导入错误:未定义符号:_ZNSt12out_of_rangeC1EPKc,versionQt_5
- javascript - 通过页面链接将页面重定向添加到所选文本