在Python中计算大数组的协方差矩阵

在Python中计算大数组的协方差矩阵,python,numpy,covariance,Python,Numpy,Covariance,我有一个[128000,2]形状的数组,想用Python计算它的协方差矩阵[Mac OS,8GB RAM,64位]。我实际上有多达10列,但对于simlicity,仅使用2列进行测试 使用numpy.cov()会导致内存错误/进程在运行大约5分钟后被终止 a = np.fromfile(filelocation,dtype=np.complex64) # length of 128000 b = np.fromfile(filelocation,dtype=np.complex64) # len

我有一个[128000,2]形状的数组,想用Python计算它的协方差矩阵[Mac OS,8GB RAM,64位]。我实际上有多达10列,但对于simlicity,仅使用2列进行测试

使用numpy.cov()会导致内存错误/进程在运行大约5分钟后被终止

a = np.fromfile(filelocation,dtype=np.complex64) # length of 128000
b = np.fromfile(filelocation,dtype=np.complex64) # length of 128000

Q = np.vstack([a,b]).T
COV = np.cov(Q)
我在这个网站上搜索过其他类似的问题,很少有人建议使用记忆地图。但我不太清楚,我应该如何准确地使用带有协方差的mem映射作为输入


如果有人能让我知道如何准确地使用memmap,或者有什么更好的方法来计算数组的协方差,那将很有帮助。

C的预期大小是多少?为什么要转置
Q
?你不想要一个2x2的协方差吗?您的代码当前试图计算128000x128000矩阵,毫不奇怪它会耗尽内存…COV的预期大小为[128000 x 128000]@Julien。我理解你的建议。确实,当您有RAM时,解决像这样的大型阵列肯定很容易。但是,对于使用具有数百万行的数据集的人来说,这不是很常见吗?他们通过购买RAM来解决问题吗?一定有一些算法可以解决这个问题。正如我提到的,其中一个是memmap。但我不明白这是怎么回事!如果您的问题是“如何使用memmap?”请阅读memmap文档: