Дай мне посмотреть, получу ли я это ...
>>> from numpy import ones, newaxis
>>> A = ones((4,3)) # 4 rows x 3 cols
>>> A.shape
(4, 3)
>>> A
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
>>>
>>> ones((4,1)) # 4 rows x 1 col
array([[ 1.],
[ 1.],
[ 1.],
[ 1.]])
>>> A + ones((4,1))
array([[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]])
>>>
>>> ones((1,3)) # 1 row x 3 cols
array([[ 1., 1., 1.]])
>>> A + ones((1,3))
array([[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]])
>>>
>>> B = ones((3,)) # a 1D array
>>> B
array([ 1., 1., 1.])
>>> B.shape
(3,)
>>> A + B
array([[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]])
>>>
>>> C = ones((4,)) # a 1D array
>>> C.shape
(4,)
>>> C
array([ 1., 1., 1., 1.])
>>> A + C
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
>>>
>>> D = C[:,newaxis]
>>> D.shape
(4, 1)
>>> A + D
array([[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]])
Успешное вещание, необходимое для создания вектора 4 x 3 плюс одномерный вектор с 3 элементами.
Передача, необходимая для создания вектора 4 x 3 плюс одномерный вектор с 4 элементами, завершается неудачей.
>>> D = C[:,newaxis]
преобразует C в двухмерный вектор совместимой формы.