2017-07-07 111 views
0

当试图计算numpy的corrcoefnumpy的corrcoef导致计算机挂起

cc = np.corrcoef(y, y2) 

其中yy2形状

<class 'tuple'>: (32383, 1) 

我的计算机挂起。不仅翻译,而且整个计算机。

这怎么可能以及如何解决?

+0

什么是计算机的硬件规格? – DarkCygnus

+0

可能你得到的尺寸错误,它返回32k x 32k矩阵,而不是标量 – jf328

+1

你看看[这个](https://stackoverflow.com/questions/30143417/computing-the-correlation-coefficient-在两个多维数组之间)问题? – DarkCygnus

回答

0

根据documentation,默认“每行代表一个变量,在列中有观察值”。形状为(32383, 1)意味着每个观测值有32383个变量,这对于相关性目的来说是完全没有意义的。因此,计算机行为不谈,进行的方式是

cc = np.corrcoef(y, y2, rowvar=False) 

表明您对应的变量。

0

计算两个形状(32383, 1)数组之间的相关系数将产生一个(32383, 32383)数组。这样一个数组将有大小(32383 * 32383 * 8)/(1024 ** 3) = 7.8 Gb。考虑到你在计算结果时可能会有一些开销,你可能需要几十Gb的数量来计算它。

可能发生的事情不是您的计算机挂起,而是计算溢出您的RAM并开始执行paging,即使用硬盘驱动器存储部分结果。这是非常慢,它会像你的电脑已经挂起。给定足够的时间,它应该给出结果。

如果你不是要计算在行互相关(其中具有形状(1, 1)),你可以这样做:

cc = np.corrcoef(y, y2, rowvar=False) 
+0

当计算机重载分页时,它不会变成砖块。在这种情况下,甚至鼠标停止移动。怎么会这样? – Dims