Numpy умножение матрицы на 3-х мерный массив - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь умножить матрицу ak на k, скажем,

W=np.array([[W_11,...,W_1k],...,[W_k1,...W_kk]])

(где W_ij - числа) и многомерный массив (k, m, m), скажем,

A=np.array([A_1,...,A_k])

, где A_i - это матрицы m на m.

Если

A_i=[a_i]

, где a_i - числа, то numpy .dot

C = np.dot (W, A) просто дает произведение векторов нормальной матрицы, то есть C имеет форму (k, 1), а у одного -

C [i] = np.array ([W_i1 a_1 + W_i2 a_2 + ... W_ik * a_k])

Я хотел бы знать, как лучше всего умножить W и A, где теперь A не обязательно является вектором, т.е. A_i являются матрицами m на m таким образом, что они имитируют продукт, как если бы A_i = [a_i], т.е. я бы хотел, чтобы C = np.dot (W, A) имело форму (k, m, m) и C [i ] должна быть матрица m на m

W_i1 A_1 + ... W_ik A_k

Конечно, я могу сделать это с помощью al oop, но я ищу эффективное решение.

1 Ответ

1 голос
/ 05 августа 2020

Насколько я понимаю из вашего вопроса, вы можете использовать numpy.einsum:

C = np.einsum('ij,jkl->ikl', W, A)

Должен выполнить работу.

...