python - 如何沿某个特定轴相乘两个 3d numpy 数组?
问题描述
假设我们有两个 numpy 数组:A
with shape (n,p,q)
,B
with shape (n,q,r)
。
C
如何将它们相乘以获得具有形状的数组(n,p,r)
?我的意思是保留轴 0 并将它们乘以轴 1 和轴 2。
我知道它可以通过以下方式计算:
C = np.stack([np.dot(a[i], b[i]) for i in range(A.shape[0])])
但是是否存在可用于直接计算它的 numpy 函数?
解决方案
我认为你可以这样做np.einsum
:
# sample data
n,p,q,r = 2,3,4,5
A = np.zeros((n,p,q))
B = np.zeros((n,p,r))
out = np.einsum('npq,nqr->npr',A,B)
out.shape
# (2, 3, 5)
推荐阅读
- laravel - 通过 mailgun 发送电子邮件时,此路由不支持 GET 方法
- javascript - 如何使网站按价格从大到小排序
- python - ImportError:无法从“预处理”导入名称“inception_preprocessing”
- pagination - 对集合使用分页时出现 Jekyll 布局错误 (jekyll-paginate-v2)
- json - 尝试通过 Compass 将 JSON 文件导入 MongoDB 时出现错误
- django - 为什么变量不能与 Django 信号中的“实例”一起使用?
- nginx - nginx 总是在域后添加斜杠
- reactjs - 反应返回组件onclick
- javascript - 如何使用正则表达式从不和谐消息中获取命令和参数,最后是(可选)用户
- swift - iOS 13 上的约束问题,看起来与 iOS 12 不同