假设我们想要计算矩阵和列向量的点积:
所以矩阵点乘向量数组确实有效(因此将其视为列向量),但其他操作(转置)无法正常工作。这不是一致的设计,不是吗?
因此,在Numpy/Python中,我们开始:
a=numpy.asarray([[1,2,3], [4,5,6], [7,8,9]])
b=numpy.asarray([[2],[1],[3]])
a.dot(b)
结果如下:
array([[13], [31], [49]])
到目前为止,一切都很好,但是为什么这也有效呢?
b=numpy.asarray([2,1,3])
a.dot(b)
结果为:
array([13, 31, 49])
我本来期望[2,1,3]是一个行向量(需要转置才能进行点积运算),但Numpy似乎默认将数组视为列向量(在矩阵乘法的情况下)?
这是如何工作的?
编辑:
为什么是:
b=numpy.asarray([2,1,3])
b.transpose()==b
所以矩阵点乘向量数组确实有效(因此将其视为列向量),但其他操作(转置)无法正常工作。这不是一致的设计,不是吗?
array([2, 1, 3])
不是行向量也不是列向量,它只是一个向量。 - user2357112[n x 1]
或[1 x n]
的对象。但我认为,关键在于一维的ndarray
只有一个维度,所以我会说它不是向量,而是数组。(当然,还有一些特殊的nd数组可以被视为向量或矩阵,即当n==2
时:) - Andras Deak -- Слава Україні