Как сделать матричные векторные внутренние произведения для каждой пары отдельно в python?
Допустим, у меня есть куча матриц As и векторов bs.
As = array([[[1, 7], [3, 8]],
[[2, 1], [5, 9]],
[[7, 2], [8, 3]]])
bs = array([[8, 0], [8, 8], [7, 3]])
Когда я делаю np.inner (As, BS), я получаю:
array([[[ 8, 64, 28], [ 24, 88, 45]],
[[ 16, 24, 17], [ 40, 112, 62]],
[[ 56, 72, 55], [ 64, 88, 65]]])
Но мне не нужны все внутренние продукты. Я хочу рассчитать каждую матрицу с каждым вектором один раз. Я могу сделать что-то вроде этого:
np.array(map(lambda (a, b): np.inner(a, b), zip(As, bs)))
Тогда я получаю ожидаемую матрицу:
array([[ 8, 24], [ 24, 112], [ 55, 65]])
Теперь я не хочу использовать zip, map и т. Д., Потому что мне нужна эта операция> 10 ** 6 раз (для обработки изображений, именно для GMM). Есть ли способ использовать NumPy, Scipy и т.д., которые могут сделать это для меня? (быстро и эффективно)