Python 如何将外部产品矢量化

Python 如何将外部产品矢量化,python,vectorization,Python,Vectorization,我有两个大小相同的矩阵P1和P2。我将获取它们的行P1[j]和P2[j],并通过使用numpy的outerproduct形成矩阵。在python循环格式中,这是通过形成矩阵列表a来实现的 for j in range(0,np.shape(P1)[0]): A[j] = np.outer(P1[j],P2[j]) 我想将此操作矢量化。np.einsum('ij,ik->ijk',P1,P2)给了我想要的东西。在内部循环中反复设置A[I]等于P1[j],P2[j])后,不清楚您是什么。最

我有两个大小相同的矩阵P1和P2。我将获取它们的行P1[j]和P2[j],并通过使用numpy的outerproduct形成矩阵。在python循环格式中,这是通过形成矩阵列表a来实现的

for j in range(0,np.shape(P1)[0]):
    A[j] = np.outer(P1[j],P2[j])

我想将此操作矢量化。

np.einsum('ij,ik->ijk',P1,P2)
给了我想要的东西。

在内部循环中反复设置
A[I]
等于
P1[j],P2[j])
后,不清楚您是什么。最后,
A
的每一行都是相同的-对于
j
的最后一个值,
outer
的结果。我明白你的意思,我已经更改了它。我只是在计算j=1,…,n个外积,其中n是P1和P2中的行数,并将它们存储在A中。可以将
np.einsum
np.newaxis
结合使用,但我目前无法理解语法。对于1D数组,外积是
np.einsum('I,j->ij',A,b)
Hi Joe,我知道einsum给出的外部产品,但我不知道如何将newaxis合并到问题中