【发布时间】:2016-09-25 15:46:50
【问题描述】:
我有两个 numpy 二维数组,我想执行此操作:
a_ij * b_ik = c_ijk
我怎样才能用 numpy 做到这一点?
【问题讨论】:
-
由于您正在执行
elementwise multiplication保持第一个轴公共,您可以简单地使用broadcasting:a[...,None]*b[:,None,:]。请参阅here了解相关说明。
我有两个 numpy 二维数组,我想执行此操作:
a_ij * b_ik = c_ijk
我怎样才能用 numpy 做到这一点?
【问题讨论】:
elementwise multiplication 保持第一个轴公共,您可以简单地使用 broadcasting : a[...,None]*b[:,None,:]。请参阅here 了解相关说明。
einsum 是为此任务量身定制的
a_ij * b_ik = c_ijk
c = np.einsum('ij,ik->ijk', a, b)
====================
但正如 Divakar 所示,没有隐含的求和,所以简单的乘法同样有效,a[...,None]*b[:,None,:]。
【讨论】: