想象一下有2个numpy数组:
> A, A.shape = (n,p)
> B, B.shape = (p,p)
Run Code Online (Sandbox Code Playgroud)
通常p是较小的数字(p <= 200),而n可以是任意大的.
我正在做以下事情:
result = np.diag(A.dot(B).dot(A.T))
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我只保留n个对角线条目,但是有一个中间(nxn)数组计算出来,只保留对角线条目.
我希望像diag_dot()这样的函数,它只计算结果的对角线条目,而不分配完整的内存.
结果将是:
> result = diag_dot(A.dot(B), A.T)
Run Code Online (Sandbox Code Playgroud)
是否有这样的预制功能,这是否可以有效地完成而无需分配中间(nxn)阵列?