2012-06-14 107 views
2

我需要做下面的大轉換矩陣來稀疏矩陣在python

b = numpy.random.randn(50001,2) 

cof = numpy.corrcoef(b) 

c= b>=0.3 

return np.dot(c, np.ones([50001,1])) 

它扔我分割故障。

另外,如果我嘗試使用稀疏矩陣,例如:

asp = scipy.sparse.csc_matrix(c) 

我得到一個分割故障

如果矩陣尺寸小的改建工程。

有什麼建議嗎?

+1

哪條線路是違規的? (它是否與'numpy.corrcoef'一起?) – huon

+3

問題是您的50001x2輸入的相關矩陣將是50001x50001。那是超過20G的RAM,我懷疑你沒有。 – talonmies

+0

我得到相關矩陣。當我嘗試使用一個向量的點積時,它給了我一個分段錯誤。這行應該讓我回到每個座標np.dot(c,np.ones([50001,1]),dtype = float)的程度,但是我得到一個seg錯誤。我有一個有48個內核和260 GB內存的服務器。不過,我只用一個核心來運行它。我不確定它爲一個內核消耗了多少內存。 –

回答

1

您是否試圖計算50001維空間的兩個樣本或50001個二維空間樣本之間的相關性?

在您當前的情況下,您正在創建隱式50001 x 50001協方差矩陣(導致段錯誤)。執行以下操作不會炸燬內存

b = numpy.random.randn(2,50001) 
cof = numpy.corrcoef(b) 

希望這是你所需要的(另一種方式得到你的協方差矩陣的一個真正的窮人逼近和段錯誤)。