0

У меня проблема с пониманием умножения матрицы в numpy. Например, у меня есть следующая матрица (2d массив NumPy):Операция умножения матричной матрицы

a = [ [ 1. 1. ] 
     [ 1. 2. ] 
     [ 1. 3. ] ] 

И следующий вектор-строка тета:

theta = [ 1. 1. ] 

Единственный способ умножить с тета будет преобразовывать тета в вектор-столбец, а затем я хотел бы получить результат:

result = [ [ 2. ] 
      [ 3. ] 
      [ 4. ] ] 

Когда я умножить матрицу и вектор-строку (без преобразования)

result = np.dot(a,theta) 

я получаю это:

result = [ 2. 3. 4. ] 

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

+1

Читать РОУ https: //docs.scipy .org/doc/numpy/reference/generated/numpy.dot.html – Kasramvd

+1

ссылка: для 2-D массивов это эквивалентно матричному умножению – Cyberlander

ответ

1

Нет, вы умножаете массив numpy на другой массив numpy (а не на матрицу с вектором), хотя это выглядит так. Это потому, что, по существу, массивы numpy не совпадают с матрицами. И этот точечный продукт тоже относится к этому.

Если вы выписываете массив и умножаете его, то вы увидите, почему. Это всего лишь точечный продукт (умножение по элементам) каждой строки в массиве 'a' с вектором 'theta'.

PS: (матрицы 2-D в то время как массивы не ограничивается какой-либо размерности)

Кроме того, пожалуйста, обратите внимание на this answer и this excellent answer