Python 如何在numpy中进行类似二元运算的操作
我有两个二维阵列Python 如何在numpy中进行类似二元运算的操作,python,numpy,Python,Numpy,我有两个二维阵列A和B。我想得到一个三维数组C,它与a和B的关系是: C_mnl=A_mn*B_ml 在numpy,我怎样才能优雅地做到这一点呢?我可以做到: 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) 你也可以使用
A
和B
。我想得到一个三维数组C
,它与a
和B
的关系是:
C_mnl=A_mn*B_ml
在numpy,我怎样才能优雅地做到这一点呢?我可以做到:
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)
你也可以使用-
解释
A[…,None]
添加一个新轴作为最后一个轴,并将所有现有尺寸推到前面。因此,这将与A[:,:,None]
相同B[:,None,:]
类似,它在现有标注之间添加了一个新轴1
和2
,我们将输入阵列的轴对齐,因此,当使用元素乘法操作时,将产生广播的形状(m,n,l)
的所需输出
看一看好的观点。有时候很容易错过简单的解决方案:)你能再解释一下吗?我已经搜索了文档,但似乎没有解释您的答案中
…
和None
的用法。@ChongWang检查编辑是否有助于理解。
C = A[...,None]*B[:,None,:]