python - numpy svd 中的内存错误

标签 python numpy scipy

我正在执行 numpy svd

U, S, V = np.linalg.svd(A) 

A 的形状是:

(10000, 10000)

由于体积太大,它给了我内存错误:

U, S, V = np.linalg.svd(A, full_matrices=False) # nargout=3
File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 1319, in svd
    work = zeros((lwork,), t)
    MemoryError

那我怎样才能找到我的矩阵的 svd?

最佳答案

一些小tips: 关闭计算机上打开的所有其他内容。通过将不再需要的变量设置为 None 来删除程序中所有不必要的内存占用。假设您之前使用大字典 D 进行某些计算,但不再需要它,请设置 D = None。尝试使用 dtype=np.int32 或 dtype=np.float32 初始化您的 numpy 数组以降低内存需求。

根据您需要 SVD 的用途,您还可以查看 python 的 scikit-learn 包,它们支持许多分解方法,例如 PCA 和 SVD 以及稀疏矩阵支持。

关于python - numpy svd 中的内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21180298/

相关文章:

python - Python 中的函数式中缀实现

python - 关于 matplotlib 中的子图和子子图位置

python - Python 中的三角网格查询

python - 使用 setuptools 安装 numpy 作为依赖项

python - 在 python 中实现基于 FFT 的二维核密度估计器,并将其与 SciPy 实现进行比较

python - 安装最新版本的 EB CL 时出现问题

python - 从 pandas cut 中排序垃圾箱

python - 如何从随机加权矩阵中选择元素

python - Scipy 插值返回一个 'dimensionless' 数组

python - 如何让odeint成功?