Numpy 矩阵乘法行为

Numpy matrix multiplication behaviour

我在理解 numpy 中的矩阵乘法时遇到问题。 例如我有以下矩阵(二维 numpy 数组):

a = [ [ 1. 1. ]
      [ 1. 2. ]
      [ 1. 3. ] ]

以及下面的行向量theta:

theta = [ 1. 1. ]

将 a 与 theta 相乘的唯一方法是变换 theta 首先在列向量中,然后我会得到结果:

result = [ [ 2. ]
           [ 3. ]
           [ 4. ] ]

当我将矩阵与行向量相乘时(不进行变换)

result = np.dot(a,theta)

我明白了:

result = [ 2. 3. 4. ]

这怎么可能?我的意思是,我没有变换矩阵。 你能告诉我这个 numpy 乘法是如何工作的吗? 感谢您的关注。

不,您正在将 numpy 数组与另一个 numpy 数组(不是带有向量的矩阵)相乘,尽管它看起来像那样。这是因为,本质上,numpy 数组与矩阵不同。点积也是这样处理的。

如果你写出数组并相乘,你就会明白为什么了。它只是数组 'a' 中每一行与向量 'theta'.

的点积(逐元素乘法)

PS:(矩阵是二维的,而数组不限于任何维度

另外,请看一下this answer and this excellent answer