У меня есть два 2D (numpy) массива, из которых я хочу сгенерировать 3D-массив следующим образом: каждая из n строк первого массива умножит (поэлементно) второй массив создать новую матрицу, что приведет к n новым массивам (формируя трехмерный массив). Я думаю, что простой пример поможет понять:
A = [[a11 a12 a13]
[a21 a22 a23]]
B = [[b11 b12 b13]
[b21 b22 b23]
[b31 b32 b33]]
# The product "A*B" would result in a matrix C such as
C = [[[a11*b11 a12*b12 a13*b13]
[a11*b21 a12*b22 a13*b23]
[a11*b31 a12*b32 a13*b33]]
[[a21*b11 a22*b12 a23*b13]
[a21*b21 a22*b22 a23*b23]
[a21*b31 a22*b32 a23*b33]]]
# Which is equivalent to (in numpy notation)
C[0] = A[0]*B
C[1] = A[1]*B
Дело в том, что размеры являются произвольными (поэтому не только 2x3 и 3x3 , конечно, вторые измерения всегда совместимы), я ищу решение без "для петель". Я попытался, например, повторить массив B, а затем умножить
B = numpy.repeat(B[nu.newaxis,:,:],2,axis=0)
C = A*B
# operands could not be broadcast together with shapes (2,5) (2,3,5)
Но новые измерения не совместимы.