假设我们要计算矩阵和列向量的点积:
所以在 Numpy/Python 中,我们开始:
a=numpy.asarray([[1,2,3], [4,5,6], [7,8,9]])
b=numpy.asarray([[2],[1],[3]])
a.dot(b)
结果是:
数组([[13],[31],[49]])
到目前为止,一切都很好,但是为什么这也有效?
b=numpy.asarray([2,1,3])
a.dot(b)
结果是:
数组([13, 31, 49])
我希望 [2,1,3] 是一个行向量(需要转置来应用点积),但 Numpy 似乎默认将数组视为列向量(在矩阵乘法的情况下)?
这是如何运作的?
编辑:
为什么是:
b=numpy.asarray([2,1,3])
b.transpose()==b
所以矩阵点向量数组确实有效(因此它将其视为列向量),但是其他操作(转置)不起作用。这不是真正一致的设计,不是吗?