Умножение массивов с трансляцией - PullRequest
0 голосов
/ 27 января 2019

У меня есть матрица mxn A и матрица nxr B, которые я хочу умножить особым образом, чтобы получить матрицу mxr.Я хочу умножить каждый элемент в i-м столбце A как скаляр на i-ю строку B и сумму n матриц

Например,

a = [[0, 1, 2],
     [3, 4, 5],

b = [[0, 1, 2, 3],
     [4, 5, 6, 7],
     [8, 9, 10, 11]]

. Продукт будет * 1006.*

a*b = [[0, 0, 0, 0],  +  [[4, 5, 6, 7],      +  [[16, 18, 20, 22],  =  [[20, 23, 26, 29],
       [0, 3, 6, 9]]      [16, 20, 24, 28]]      [40, 45, 50, 55]]      [56, 68, 80, 92]]

Я не могу использовать какие-либо циклы, поэтому я почти уверен, что должен использовать трансляцию, но я не знаю как.Любая помощь приветствуется

1 Ответ

0 голосов
/ 27 января 2019

Ваши входные матрицы имеют форму (2, 3) и (3, 4) соответственно, а результат, который вы хотите, имеет форму (2, 4).

То, что вам нужно, это просто точка произведение ваших двух матриц как

a = np.array([[0, 1, 2],
     [3, 4, 5]])

b = np.array([[0, 1, 2, 3],
     [4, 5, 6, 7],
     [8, 9, 10, 11]])

print (np.dot(a,b))

# array([[20, 23, 26, 29],
#        [56, 68, 80, 92]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...