Numpy多个外部产品

2024-10-06 09:00:00 发布

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

我想知道是否有一种方法可以计算多个外积并将结果叠加到一个操作中。你知道吗

假设我有一个Nx1向量,取外积和一个1xM向量,结果将是一个NxM矩阵。你知道吗

如果我有一个NxR矩阵A和一个RxM矩阵B,那么有没有可能构造一个NxMxR矩阵,其中输出矩阵的每一层都是A的相应列和B的行的外积?你知道吗

我知道在一个for-loop-over R中实现这一点非常容易,但是我想知道是否有一种更快的方法使用numpy内置程序(当涉及numpy时通常是这样)。你知道吗

我还没有弄清楚一组与einsum一起工作的索引(我甚至不确定einsum是否是正确的方法,因为这里没有求和)


Tags: 方法numpyloopfor矩阵向量内置over
1条回答
网友
1楼 · 发布于 2024-10-06 09:00:00

是的,当然,使用broadcasting或Einsum(没有求和的事实并不重要)

N, M, R = 8, 9, 16

A = numpy.random.rand(N)
B = numpy.random.rand(M)

C = A[:, None] * B[None, :]
D = numpy.einsum('a,b->ab', A, B)
numpy.allclose(C, D)
# True
C.shape
# (8, 9)

A = numpy.random.rand(N, R)
B = numpy.random.rand(M, R)

C = A[:, None, :] * B[None, :, :]
D = numpy.einsum('ar,br->abr', A, B)
numpy.allclose(C, D)
# True
C.shape
# (8, 9, 16)

相关问题 更多 >