【发布时间】:2020-01-29 09:40:50
【问题描述】:
我正在尝试为每两行计算两个矩阵之间的点积。
我有矩阵D 和(u x 2) 尺寸和矩阵R 和(u*2 x c) 尺寸。
下面是一个例子:
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),如下(第一行示例):
M = np.array([[-0.2185, 0.0825, 0.2195, -0.1645],
[...]])
这是dot 第一行D 和矩阵R 前两行之间的乘积:
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 的各种方法,但没有任何运气。我正在寻找矢量化解决方案并避免循环(这是我当前的解决方案,非常慢)。
【问题讨论】: