Как мне получить скалярное произведение двух матриц, используя numpy? - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь получить скалярное произведение вектора и матрицы, используя numpy, но получаю следующее исключение: ValueError: shapes (2,1) and (2,2) not aligned: 1 (dim 1) != 2 (dim 0)

По сути, я просто хочу умножить 2x1-матрицу (2-рядный вектор) на 2x2-матрицу, но numpy, похоже, не поддерживает это. Я уже пытался сделать то же самое с матрицей 1x2, и это сработало, но не дало мне того результата, который я искал.

Код, который я использую:

inputs = np.matrix([[1], [0]])
weights = np.matrix([[1, 2], [3, 4]])
print(np.add(np.dot(inputs, weights), 0))

#desired result = array([1, 3])

Так что мой вопрос будет таким: Как я могу выполнить желаемую операцию с помощью numpy?

EDIT

Вот что происходит:

>>> import numpy as np
>>> a = np.matrix([[1], [0]])
>>> b = np.matrix([[1, 2], [3, 4]])
>>> a * b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist- 
packages/numpy/matrixlib/defmatrix.py", line 309, in __mul__
    return N.dot(self, asmatrix(other))
ValueError: shapes (2,1) and (2,2) not aligned: 1 (dim 1) != 2 (dim 0)

1 Ответ

0 голосов
/ 30 апреля 2018

Точечный продукт для векторов одинакового размера. Вы можете просто умножить матрицы в NumPy. Если вам нужно другое решение - укажите свой код в вопросе и желаемый результат.

a = np.array([2,3])
b = np.array([[4,5],[6,7]])

>>> a * b
array([[ 8, 15],
    [12, 21]])

Обновление за обновленный вопрос:

inputs = np.matrix([[1], [0]])
weights = np.matrix([[1, 2], [3, 4]])
>>> weights * inputs
matrix([[1],
        [3]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...