2017-07-07 84 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