python - Numpy: add a vector to matrix column wise -
a out[57]: array([[1, 2], [3, 4]]) b out[58]: array([[5, 6], [7, 8]]) in[63]: a[:,-1] + b out[63]: array([[ 7, 10], [ 9, 12]])
this row wise addition. how add them column wise
in [65]: result out[65]: array([[ 7, 8], [11, 12]])
i don't want transpose whole array, add , transpose back. there other way?
add newaxis end of a[:,-1]
, has shape (2,1)
. addition b
broadcast along column (the second axis) instead of rows (which default).
in [47]: b + a[:,-1][:, np.newaxis] out[47]: array([[ 7, 8], [11, 12]])
a[:,-1]
has shape (2,)
. b
has shape (2,2)
. broadcasting adds new axes on left default. when numpy computes a[:,-1] + b
broadcasting mechanism causes a[:,-1]
's shape changed (1,2)
, broadcasted (2,2)
, values along axis of length 1 (i.e. along rows) broadcasted.
in contrast, a[:,-1][:, np.newaxis]
has shape (2,1)
. broadcasting changes shape (2,2)
values along axis of length 1 (i.e. along columns) broadcasted.
Comments
Post a Comment