当试图计算numpy的corrcoefnumpy的corrcoef导致计算机挂起
cc = np.corrcoef(y, y2)
其中y
和y2
形状
<class 'tuple'>: (32383, 1)
我的计算机挂起。不仅翻译,而且整个计算机。
这怎么可能以及如何解决?
当试图计算numpy的corrcoefnumpy的corrcoef导致计算机挂起
cc = np.corrcoef(y, y2)
其中y
和y2
形状
<class 'tuple'>: (32383, 1)
我的计算机挂起。不仅翻译,而且整个计算机。
这怎么可能以及如何解决?
根据documentation,默认“每行代表一个变量,在列中有观察值”。形状为(32383, 1)
意味着每个观测值有32383个变量,这对于相关性目的来说是完全没有意义的。因此,计算机行为不谈,进行的方式是
cc = np.corrcoef(y, y2, rowvar=False)
表明您列对应的变量。
计算两个形状(32383, 1)
数组之间的相关系数将产生一个(32383, 32383)
数组。这样一个数组将有大小(32383 * 32383 * 8)/(1024 ** 3) = 7.8 Gb
。考虑到你在计算结果时可能会有一些开销,你可能需要几十Gb的数量来计算它。
可能发生的事情不是您的计算机挂起,而是计算溢出您的RAM并开始执行paging,即使用硬盘驱动器存储部分结果。这是非常慢,它会像你的电脑已经挂起。给定足够的时间,它应该给出结果。
如果你不是要计算在行互相关(其中具有形状(1, 1)
),你可以这样做:
cc = np.corrcoef(y, y2, rowvar=False)
当计算机重载分页时,它不会变成砖块。在这种情况下,甚至鼠标停止移动。怎么会这样? – Dims
什么是计算机的硬件规格? – DarkCygnus
可能你得到的尺寸错误,它返回32k x 32k矩阵,而不是标量 – jf328
你看看[这个](https://stackoverflow.com/questions/30143417/computing-the-correlation-coefficient-在两个多维数组之间)问题? – DarkCygnus