У меня есть два массива, размером a (20 * 3 * 3) и размером b (3 * 3).Пусть a = (a1, a2, ..., a20).Я хочу вычислить матричный элемент произведения следующим образом: c = (c1, c2, ..., c20), ci = bT ai b, i = 1 ~ 20.Как я могу сделать это эффективно, используя NumPy?
Медленная версия, использующая цикл for, выглядит следующим образом:
a = np.random.sample((20, 3, 3))
b = np.random.sample((3, 3))
c = np.zeros_like(a)
for i0, ai in enumerate(a):
c[i0] = np.dot(b.T, np.dot(ai, b))