2011-02-03 13 views
4

我有一個大矩陣,目前在numpy中,我想移植到scipy稀疏矩陣,因爲保存numpy(2000,2000)矩陣的文本表示超過100MB。 (1)scipy中似乎存在稀疏矩陣的過度使用[例如,lil_matrixdok_matrix-哪一個對於簡單遞增是最佳的,並且有效地保存到數據庫中?在Scipy稀疏矩陣中尋址範圍

(2) 我希望能夠解決的範圍在矩陣像這樣:

>> import numpy as np  
>> a = np.zeros((1000,1000)) 
>> a[3:5,4:7] += 1 

看來,這是不可能的稀疏矩陣?

回答

6

我不能說哪個是最有效的存儲。這將取決於您的數據。

我可以說,但該+=運營商的作品,只是你不能依靠平時的陣列廣播規則:

>>> m = sparse.lil_matrix((100,100)) 
>>> m[50:56,50:56]+=scipy.ones((6,6)) 
>>> m[50,50] #1.0 
+1

的`+ =`操作僅適用於`lil`矩陣 - 嘗試`m = sparse.csr_matrix((100,100)); m [50:56,50:56] + = scipy.ones((6,6))`,你會得到一個`NotImplementedError`(scipy 0.14.0.dev-86f95bd) – 2013-10-08 08:46:52