如果它们都具有相同的形状,例如两个(n,1)或两个(n,),则两个矢量的元素乘法没有问题。但是,如果一个向量具有形状(n,1)而另一个向量具有(n,),则*
- 运算符返回一些有趣的东西。
a = np.ones((3,1))
b = np.ones((3,))
print a * b
得到的nxn矩阵包含A_ {i,j} = a_i * b_j。
如何为a
和b
进行元素乘法呢?
答案 0 :(得分:17)
以使形状匹配的方式切割矢量:
a[:, 0] * b
或
a * b[:, None]
答案 1 :(得分:4)
向b
添加第二个轴a
,b
具有相同的尺寸:
>>> a * b[:,np.newaxis]
array([[ 1.],
[ 1.],
[ 1.]])
或者,转置a
以便广播有效:
>>> a.T * b
array([[ 1., 1., 1.]])
(你可能想转置结果。)