我有两个矩阵
问题在于,当使用这种形式时,我会得到一个
有没有一种方法可以执行此操作,而无需先构建要求和的(巨大的)中间数组?
我怀疑使用
A
和B
,都具有形状(N,M)
。我想执行以下操作:C = np.sum(A[:,None,:]*B[:,:,None],axis=(1,2))
,它对应于对每行的A
与每行的B
进行外积求和。然后,C
的形状将为(N,)
。问题在于,当使用这种形式时,我会得到一个
MemoryError
,因为N=12000
且M=4000
。有没有一种方法可以执行此操作,而无需先构建要求和的(巨大的)中间数组?
我怀疑使用
np.einsum
的解决方案会奏效,但我对其不熟悉!
np.einsum
明显更快,使用的内存也更少,我会检查它是否解决了我的问题。 - Toool