2011-04-29 22 views
3

是否可以通過函數定義scipy中的稀疏矩陣而不是佈置所有可能的值?在文檔的我看到一個稀疏矩陣可以通過由函數定義的SciPy中的稀疏矩陣

There are seven available sparse matrix types: 
csc_matrix: Compressed Sparse Column format 
csr_matrix: Compressed Sparse Row format 
bsr_matrix: Block Sparse Row format 
lil_matrix: List of Lists format 
dok_matrix: Dictionary of Keys format 
coo_matrix: COOrdinate format (aka IJV, triplet format) 
dia_matrix: DIAgonal format 

所有這些力量來創造你事先指定的矩陣,這會佔用內存。有什麼辦法可以簡單地提供一個函數來在需要時計算(i,j)?最終目標是通過類似Lanczos方法計算矩陣的幾個最大特徵向量。

+0

你想避免python循環嗎?因爲(希望很明顯)你可以在創建一個空稀疏矩陣後設置這些值:'m [i,j] = fn(i,j)' – Paul 2011-04-29 22:10:14

+0

@Paul我理想的情況是永遠不會設置內存中的值 - 是,我有一個非常大的稀疏矩陣,其中非零元素的數量大於我的記憶大小,但計算起來很快。 – Hooked 2011-04-29 22:33:37

回答

2

簡短的回答是「不」,但我認爲這很容易推出自己的類矩陣對象。如果您使用eigsh來獲得您的答案(這似乎是Lanczos算法的實現),那麼您的矩陣就像matvec(x)方法一樣,這可能也可能不容易。

我意識到這不是一個完整的答案,但我希望這會讓你在你的路上。

+0

如果答案是沒有問題的話,我將不得不在不同的圖書館中尋找我需要的東西。謝謝! – Hooked 2011-05-02 02:56:47