如何在numpy中进行二元运算

2024-04-18 23:09:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个二维数组AB。我想得到一个三维数组C,它与AB的关系是:

C_mnl=A_mn*B_ml

我怎样才能在numpy中优雅地做到这一点?你知道吗


Tags: numpy关系数组mlmnmnl
2条回答

也可以使用^{}-

C = A[...,None]*B[:,None,:]

解释

  1. A[...,None]添加一个新轴作为最后一个轴,None(相当于^{})将所有现有维度推到前面。因此,这与A[:,:,None]相同。你知道吗
  2. B[:,None,:]类似,它在现有维度之间添加了一个新的轴。你知道吗
  3. 在步骤12中,我们将输入数组的轴对齐,因此,当使用元素乘法操作时,将产生所需的(m,n,l)形状输出。你知道吗

^{}可以做到:

a = np.arange(6).reshape(3,2)  # a.shape = (3, 2)
b = np.arange(12).reshape(3,4)  # b.shape = (3, 4)

c = np.einsum('mn,ml->mnl', a, b)  # c.shape = (3, 2, 4)

相关问题 更多 >