Python numpy向量乘法速度?

Python numpy向量乘法速度?,python,numpy,Python,Numpy,我是numpy的新手,发现了(对我来说)这种奇怪的行为。 我正在实现逻辑回归成本函数,这里有两个相同维度和相同类型的列向量(dfloat)。y包含一组0和1,a包含范围(-1,1)内的浮点数。 在某一点上,我应该得到点积,所以我转置一并乘以它们: x = y.T @ a 但是当我使用 x = y @ a.T 偶尔性能会下降约3倍,但结果相同 为什么会这样?操作不一样吗? 谢谢。性能下降,您会得到一个非常不同的答案 对于向量乘法(与数字乘法不同)a@b!=b@a。在您的情况下(假设

我是numpy的新手,发现了(对我来说)这种奇怪的行为。 我正在实现逻辑回归成本函数,这里有两个相同维度和相同类型的列向量(dfloat)。y包含一组0和1,a包含范围(-1,1)内的浮点数。 在某一点上,我应该得到点积,所以我转置一并乘以它们:

   x = y.T @ a
但是当我使用

   x = y @ a.T
偶尔性能会下降约3倍,但结果相同 为什么会这样?操作不一样吗?
谢谢。

性能下降,您会得到一个非常不同的答案

对于向量乘法(与数字乘法不同)
a@b!=b@a
。在您的情况下(假设列向量),
a.T@b
是一个数字,但是
a@b.T
是一个完整的矩阵!因此,如果你的向量都是(1,y)形状,最后一个操作将产生一个(y,y)矩阵,它可能非常大。当然,计算这样一个矩阵(也就是说,加上一大堆数字并产生一大堆数字)要比加上一堆数字并产生一个数字花费更多的时间


这就是矩阵(或向量)乘法的工作原理。

输入的典型形状是什么?我认为这些运算是不同的
y.T@a
应该与
(a.T@y)相同。T
对,我又弄乱了矩阵维度。谢谢