我需要在numpy/scipy中迭代構建一個巨大的稀疏矩陣。該intitialization是一個循環中完成:巨大的python稀疏矩陣
from scipy.sparse import dok_matrix, csr_matrix
def foo(*args):
dim_x = 256*256*1024
dim_y = 128*128*512
matrix = dok_matrix((dim_x, dim_y))
for i in range(dim_x):
# compute stuff in order to get j
matrix[i, j] = 1.
return matrix.tocsr()
那麼我需要因爲進一步的計算類似的將其轉換爲一個csr_matrix,:
matrix = foo(...)
result = matrix.T.dot(x)
這是工作的罰款開始。但是我的矩陣越來越大,我的電腦開始崩潰。在存儲矩陣中有更優雅的方法嗎?
基本上我有以下要求:
- 的矩陣需要存儲浮點值形式0.〜1
- 我需要計算矩陣的轉置
- 我需要計算點積與x_dimensional矢量
- 矩陣尺寸可以是大約1 * 10^9×1 * 10^8
我夯存儲超過。我正在讀堆棧溢出和其他互聯網上的幾篇文章;)我發現PyTables,這不是真正的矩陣計算...等等。有沒有更好的方法?
我認爲這可能是更多的數學/數值分析問題:)在我的Num.Anal。當然,做這種大小的矩陣的唯一方法是使它成爲三角形。 – 2014-10-07 03:23:51
另外,我知道你要求的是numpy,但是我有一個有點完成的python庫。 [這是在github上](https:// github。com/Twoody/Lin_Alg_py) – 2014-10-07 03:26:11
當你問這個問題時,看起來你想存儲浮動塊,但是你接受了一個提示int的答案。我只是好奇 - 我在這裏錯過了什麼?謝謝! – 2016-02-21 20:20:30