我正在尝试使用 NumPy 对循环进行矢量化,但我被卡住了我有一个A
形状矩阵(NN,NN)
我定义了 A-dot 乘积
def scalA(u,v):
return v.T @ A @ u
然后我有两个矩阵B
和C
(B
有一个形状(N,NN)
并且C
有一个形状(K,NN)
我要矢量化的循环是
res = np.zeros((N,K))
for n in range(N):
for k in range(K):
res[n,k] = scalA(B[n,:], C[k,:])
我在研究过程中发现了np.tensordot
or之类的函数np.einsum
,但我并没有真正理解它们是如何工作的,并且(如果我很好理解的话)tensordot
将计算规范的点积(A = np.eye(NN)
在我的情况下对应)。
谢谢 !