我需要在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