當試圖計算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