【发布时间】:2020-04-09 08:10:03
【问题描述】:
我目前正在开展一个项目,我必须使用 Lanczos 算法计算极值特征值。我替换了 MVM,以便即时计算矩阵元素,因为我必须计算真正巨大矩阵的特征值。这会减慢我的代码速度,因为 python 中的 for 循环比 MVM 慢。有什么方法可以简单地改进我的代码吗?我尝试使用 Cython,但在这里我没有真正的运气。
for i in range(0,dim):
for j in range(0,dim):
temp=get_Matrix_Element(i,j)
ws[i]=ws[i]+temp*v[j]
这替换:
ws = M.dot(v)
更新 ,atrix M 是稀疏的,可以使用 scipy.sparse 以稀疏矩阵格式存储“小型”系统。对于高达 ~10^9 维的大型系统,我需要即时计算矩阵元素
【问题讨论】:
-
但是,我刚刚注意到一个标签 [sparse-matrix]。实际上,您的矩阵是稀疏的吗?如果是这样,你如何存储它?
-
@AntonMenshov 我使用的矩阵确实是稀疏的。对于“小型”系统,使用 scipy.sparse 以稀疏矩阵格式保存 M 是可行的。但我想获得高达 ~10^9 维的大型系统的特征值。这就是我即时计算元素的原因
-
那么,我想,我提出的方法是有道理的。
标签: python sparse-matrix linear-algebra matrix-multiplication