我是numpy的新手,我猜np.array()的返回是一个行向量,因为两个向量之间的点积是可交换的,我猜对了吗?任何反响都很感激。
vx = np.array([1, 2])
vw = np.array([3, 5])
np.dot(vx, vw)
np.dot(vw, vx)
答案 0 :(得分:1)
数组是1d('向量',而不是行/列向量)。
来自dot
docuentation的第一段:
对于二维阵列,它相当于矩阵乘法,对于1-D 阵列到载体的内积(没有复共轭)。对于 N维是指
的倒数第二位a
的最后一个轴上的和积b
所以你得到了内在的产品,这是可交换的。
In [118]: vx = np.array([1, 2])
In [119]: vx.shape
Out[119]: (2,)
dot
返回一个标量:
In [120]: np.dot(vx,vx)
Out[120]: 5
对于2d'行向量',形状很重要。 dot
是矩阵乘法,最后调暗以匹配第二个到最后一个,例如2匹配2。
In [121]: vx2 = np.array([[1,2]])
In [122]: vx2.shape
Out[122]: (1, 2)
In [123]: np.dot(vx2, vx2)
...
ValueError: shapes (1,2) and (1,2) not aligned: 2 (dim 1) != 1 (dim 0)
In [124]: np.dot(vx2, vx2.T)
Out[124]: array([[5]])
在这种情况下,结果是2d(1,1)。