【发布时间】:2020-06-21 21:41:18
【问题描述】:
我有一个转换矩阵,我想为其计算一个稳态向量。我使用的代码改编自this question,它适用于正常大小的矩阵:
def steady_state(matrix):
dim = matrix.shape[0]
q = (matrix - np.eye(dim))
ones = np.ones(dim)
q = np.c_[q, ones]
qtq = np.dot(q, q.T)
bqt = np.ones(dim)
return np.linalg.solve(qtq, bqt)
但是,我正在使用的矩阵大约有150 万行和列。它也不是稀疏矩阵;大多数条目很小但非零。当然,只是尝试构建该矩阵会引发内存错误。
我怎样才能修改上面的代码来处理巨大的矩阵?我有 heard of solutions 喜欢 PyTables,但我不知道如何应用它们,我不知道是否他们会为np.linalg.solve 之类的任务工作。
对于 numpy 非常陌生并且对线性代数非常缺乏经验,我非常感谢我的案例中的一个示例。我愿意使用 numpy 以外的东西,如果需要的话,甚至可以使用 Python 以外的东西。
【问题讨论】:
-
这能回答你的问题吗? Very large matrices using Python and NumPy
-
不确定这是否能完全解决问题,但请考虑查看dask library
标签: python numpy matrix large-data pytables