У меня есть два массива. Один n
на p
, а другой d
на p
на r
. Я хотел бы, чтобы мой вывод был d
на n
на r
, чего я могу легко достичь, построив тензор B
ниже. Однако я хотел бы сделать это без этого цикла.
import numpy
X = numpy.array([[1,2,3],[3,4,5],[5,6,7],[7,8,9]]) # n x p
betas = numpy.array([[[1,2],[1,2],[1,2]], [[5,6],[5,6],[5,6]]]) # d x p x r
print X.shape
print betas.shape
B = numpy.zeros((betas.shape[0],X.shape[0],betas.shape[2]))
print B.shape
for i in range(B.shape[0]):
B[i,:,:] = numpy.dot(X, betas[i])
print "B",B
C = numpy.tensordot(X, betas, axes=([1],[0]))
print C.shape
Я пытался разными способами заставить C
соответствовать B
, но пока безуспешно. Есть ли способ, который не включает вызов reshape
?