Python 行组的Numpy点积
我试图计算两个矩阵之间的点积,每两行。 我有矩阵Python 行组的Numpy点积,python,numpy,Python,Numpy,我试图计算两个矩阵之间的点积,每两行。 我有矩阵D和(ux2)维数,矩阵R和(ux2xc)维数。 下面是一个例子: D = np.array([[0.02747092, 0.11233295], [0.02747092, 0.07295284], [0.01245856, 0.19935923], [0.01245856, 0.13520913], [0.11233295, 0.072
D
和(ux2)
维数,矩阵R和(ux2xc)
维数。
下面是一个例子:
D = np.array([[0.02747092, 0.11233295],
[0.02747092, 0.07295284],
[0.01245856, 0.19935923],
[0.01245856, 0.13520913],
[0.11233295, 0.07295284]])
R = np.array([[-3. , 0. , 1. , -1. ],
[-1.25 , 0.75 , 1.75 , -1.25 ],
[-2.33333333, -0.33333333, 1.66666667, -1.33333333],
[-1.25 , 0.75 , 1.75 , -1.25 ],
[ 0. , -2. , 2. , -4. ],
[-1.25 , 0.75 , 1.75 , -1.25 ],
[ 0.66666667, -3.33333333, 2.66666667, -4.33333333],
[-1.25 , 0.75 , 1.75 , -1.25 ],
[-2.33333333, -0.33333333, 1.66666667, -1.33333333],
[-3. , 0. , 1. , -1. ]])
结果应为矩阵M,尺寸(u x c)
如下(第一行示例):
这是D
的第一行与矩阵R
的前两行之间的dot
乘积的结果,如下所示:
D_ = np.array([[0.027, 0.11]])
R_ = np.array([[-3., 0., 1., -1.],
[-1.25, 0.75, 1.75, -1.25]])
D_.dot(R_)
在将
D
矩阵重塑为张量后,我尝试了各种np.tensordot
的方法,但没有成功。我正在寻找矢量化的解决方案,以避免循环(这是我目前的解决方案,相当缓慢) 将R
重塑为3D并使用np.einsum
-
np.einsum('ijk,ij->ik',R.reshape(len(D),2,-1),D)
np.einsum('ijk,ij->ik',R.reshape(len(D),2,-1),D)