如何通过numpy.memmap数组到np.cov公司功能?

2024-09-19 23:40:14 发布

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

我想通过numpy.memmap数组到np.cov公司函数,因为我在处理普通numpy数组时有内存错误。在

有点像

np.cov(data_c,rowvar=0,out=fcov)

下面是我的代码片段:

^{pr2}$

但问题是np.cov公司没有out=参数。在

当我使用

fcov= np.cov(data_c,rowvar=0)

好像在里面np.cov公司在内存中创建数组或其他东西的临时副本。在

我设法换了np.cov公司函数,但我不明白为什么我必须乘以2,因为根据this它只是(A.t*A)/(n-1),而且它还需要矩阵换位,所以它看起来不是很好的解决方案。在

def cov_mat(fmat):
    #if fmat centered then 2*(A.T*A)/(n-1) covariance matrix
    M= fmat.shape[0]
    N= fmat.shape[1]
    fcov= np.memmap('cov.npy', dtype='float32', mode='w+', shape=(N,N))

    fmat_tr= np.memmap('A_tr.npy', dtype='float32', mode='w+', shape=(N,M))
    fmat_tr= fmat.T
    np.dot(fmat_tr,fmat,out=fcov)
    fcov= 2*fcov/(N-1)

    return fcov

Tags: 函数内存numpydatanp公司数组out