Я пытаюсь понять, как обрабатывать 1D
массив (вектор в линейной алгебре) с NumPy
.
В следующем примере я генерирую два numpy.array
a
и b
:
>>> import numpy as np
>>> a = np.array([1,2,3])
>>> b = np.array([[1],[2],[3]]).reshape(1,3)
>>> a.shape
(3,)
>>> b.shape
(1, 3)
Для меня a
и b
имеют одинаковую форму в соответствии с определением линейной алгебры: 1 строка, 3 столбца, но не для NumPy
.
Теперь продукт NumPy
dot
:
>>> np.dot(a,a)
14
>>> np.dot(b,a)
array([14])
>>> np.dot(b,b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: objects are not aligned
У меня есть три разных выхода.
В чем разница между dot(a,a)
и dot(b,a)
? Почему точка (b,b)
не работает?
У меня также есть некоторые различия с этими точечными продуктами:
>>> c = np.ones(9).reshape(3,3)
>>> np.dot(a,c)
array([ 6., 6., 6.])
>>> np.dot(b,c)
array([[ 6., 6., 6.]])