我想通过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
目前没有回答
相关问题 更多 >
编程相关推荐