python - dot product across multiple axes -
given 2 numpy arrays first d dimensions equal in size
import numpy d = 3 = numpy.random.rand(2, 2, 2, 12, 3) b = numpy.random.rand(2, 2, 2, 5) i compute dot-product across first dimensions. this
a2 = a.reshape(-1, *a.shape[d:]) b2 = b.reshape(-1, *b.shape[d:]) out = numpy.dot(numpy.moveaxis(a2, 0, -1), numpy.moveaxis(b2, 0, -2)) works, if b not of shape (2, 2, 2). messing around reshape , moveaxis seems more complicated necessary.
are there more elegant solutions? (perhaps tensordot?)
again use np.einsum
np.einsum('ijklm,ijkn->lmn',a,b)
Comments
Post a Comment