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
我在理解 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