计算一个矩阵数组与另一个矩阵的行或列的点积

2024-04-19 10:59:38 发布

您现在位置:Python中文网/ 问答频道 /正文

有两个数组,形状为(3,10,10)的数组d和形状为(3,10)的数组e,如何计算d的第一个10x10矩阵和e的第一行的点积,第二个d的10x10矩阵和e的第二行的点积,等等

例如,具有以下两个数组:

d = np.array([np.diag([1,1,1,1,1,1,1,1,1,1]), 
              np.diag([2,2,2,2,2,2,2,2,2,2]), 
              np.diag([3,3,3,3,3,3,3,3,3,3])])     
e = np.arange(30).reshape((3,10))

如何计算3x10阵列:

array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [20, 22, 24, 26, 28, 30, 32, 34, 36, 38],
       [60, 63, 66, 69, 72, 75, 78, 81, 84, 87]])

我尝试过使用np.dotnp.tensordot并且在这样做之前还对e进行了换位和添加一个新的轴,但是我不知道如何解决这个问题。你知道吗


Tags: np矩阵数组arraydotdiag形状arange
1条回答
网友
1楼 · 发布于 2024-04-19 10:59:38

我们可以用^{}-

np.einsum('ijk,ij->ik',d,e)

使用它的optimize标志来使用BLAS。你知道吗

np.matmul-

np.matmul(d,e[...,None])[...,0]

注意:在python3.x上np.matmul可以替换为@ operator。你知道吗

相关问题 更多 >