Несколько массивов в NumPy
Слева от стрелки через запятую перечисляют индексы каждого аргумента по порядку. Общие буквы между массивами означают умножение с согласованием осей, а буквы, которые нигде не появились справа, снова суммируют.
Ряд 'i', таблица 'ij'
и второй ряд 'j' можно связать
записью 'i,ij,j->': по каждой
паре индексов перемножают три
значения и складывают всё в одно
число:
import numpy as np
vec_a = np.array([1., 2.])
mat = np.array([[1., 0.],
[0., 1.]])
vec_b = np.array([3., 4.])
total = np.einsum('i,ij,j->', vec_a, mat, vec_b)
print(total) # выведет 11.0
Для рядов [2, 1] и [1, 3]
и таблицы [[1, 0], [0, 1]]
свяжите все три аргумента одной
формулой без букв справа от стрелки
и выведите одно число.
Для рядов [1, 2] и [2, 0]
и таблицы [[1, 1], [0, 1]]
получите скаляр тем же приёмом
с тремя списками индексов слева
и выведите ответ.