2015-07-29 4 views
0

Я один вектор (форма (4,1)) и одна матрица (форма (4,4))матрица - вектор умножение питона (NumPy)

Я пытаюсь перемножить их, используя оператор *, который при использовании на объекте матрицы является матрица умножения, но я получаю ошибку значения:

ValueError: shapes (4,1) and (4,4) not aligned: 1 (dim 1) != 4 (dim 0) 

Как я могу идти об этом? Я понимаю, как это сделать вручную, и подумал, что это будет довольно просто с numpy

ответ

0

Помните, что для матричного умножения второе измерение первой матрицы должно быть равно первому размеру второго. Поэтому выполнение матричного умножения вектора 4x1 и матрицы 4x4 невозможно.

Что вы можете сделать транспонирование вектора (используя myvector.T), так что вы получите вектор 1x4 и умножать что с вашей 4x4 матрицы.

В качестве альтернативы вы можете размножать вектор с правой стороны.

0

Вы не можете умножить вектор 4x1 с матрицей 4x4.

Вы должны сделать обратное, умножить матрицу на вектор. Или транспонируйте вектор.

0
>>> v1 = numpy.arange(1,5).reshape(1,4) 
>>> v1 
array([[1, 2, 3, 4]]) 
>>> v1.shape 
(1, 4) 
>>> v2 = numpy.ones((4,4)) 
>>> v2 
array([[ 1., 1., 1., 1.], 
     [ 1., 1., 1., 1.], 
     [ 1., 1., 1., 1.], 
     [ 1., 1., 1., 1.]]) 
>>> v2.shape 
(4, 4) 
>>> v3 = v1*v2 
>>> v3 
array([[ 1., 2., 3., 4.], 
     [ 1., 2., 3., 4.], 
     [ 1., 2., 3., 4.], 
     [ 1., 2., 3., 4.]]) 
>>> 
Смежные вопросы