使用 numpy.empty 时出现 Python MemoryError

标签 python

我有这个代码,

size_of_similarity_M =80000
similarity_M = numpy.empty((size_of_similarity_M,size_of_similarity_M))

我收到此错误:

Traceback (most recent call last):
File "<ipython-input-1337-7f9234015aae>", line 1, in <module>
runfile('C:/Users/cp1/PythonScript/Try_replace_function.py', wdir='C:/Users/cp1/PythonScript')
File "C:\Users\cp1\AppData\Local\Continuum\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "C:\Users\cp1\AppData\Local\Continuum\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/cp1/PythonScript/Try_replace_function.py", line 14, in <module>
similarity_M = numpy.empty((size_of_similarity_M,size_of_similarity_M))

MemoryError

如何在不更新所有脚本的情况下轻松解决此问题?当然,对于 size_of_similarity_M 中的较小数字,它效果很好。 我不会更改 similarity_M 的格式,因为我在其他脚本中使用此矩阵的输出。

最佳答案

numpy.arrays 应该存在于内存中。如果您想使用大于 RAM 的矩阵,则必须解决这个问题。您至少可以遵循两种方法:

  1. 尝试使用矩阵所具有的任何特殊结构的更有效的矩阵表示形式。例如,正如其他人已经指出的那样,稀疏矩阵(有很多零的矩阵)有有效的数据结构,例如 scipy.sparse.csc_matrix .
  2. 修改您的算法以处理子矩阵。您只能从磁盘读取当前正在计算中使用的矩阵 block 。设计用于在集群上运行的算法通常按 block 工作,因为数据分散在不同的计算机上,并且仅在需要时才传递。

关于使用 numpy.empty 时出现 Python MemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42072483/

相关文章:

python - 检测 Celery 是否可用并正在运行

c# - 如何处理使用(Py.GIL()) block pythonnet中的异常

python - 如何找到PyPI入口对应的现有deb包?

python - 使用 PyGTK 为 xscreensaver 创建屏幕保护程序

python - 为什么我不能只更改 Python 嵌套列表中的单个元素

python - 尝试在 python 中通过 TCP 创建粗略的发送/接收

python - 类型错误 : unsupported operand type(s)s for +: 'StringVar' and 'str' //Create a text file

python - 将具有最接近值的列添加到 PySpark Dataframe

python - ModelChoiceField 查询集到另一个 OneToOne 相关表

python - 使用预训练 VGG-16 模型的 Caffe 形状不匹配错误