Skip to content Skip to sidebar Skip to footer

Numpy - Multiple Outer Products

I was wondering if there's a way to compute multiple outer products and stack the results in a single operation. Say I have an Nx1 vector and take the outer product with a 1xM vect

Solution 1:

Yes, of course, using broadcasting or Einsum (the fact that there is no summation does not matter)

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)

Post a Comment for "Numpy - Multiple Outer Products"