gpt4 book ai didi

python - 看来我已经用完了 32 位地址空间。我有哪些选择?

转载 作者:太空狗 更新时间:2023-10-29 19:29:45 25 4
gpt4 key购买 nike

我正在尝试使用 numpy.cov 获取大型矩阵的协方差。我收到以下错误:

Python(22498,0xa02e3720) malloc: *** mmap(size=1340379136) failed (error code=12)*** error: can't allocate region*** set a breakpoint in malloc_error_break to debugProcess Python bus error

对于 32 位机器/构建来说,这似乎并不少见(我有一个 64 位 mac os x 10.5,但使用 32 位 python 和 numpy 构建,因为我在构建 numpy+scipy+matplotlib 时遇到了问题64 位安装)。

那么在这一点上,如果不切换机器(目前没有其他机器可供我使用),那么推荐的行动方案是什么可以让我继续进行分析?导出到 Fortran/C?有简单的(r)解决方案吗?感谢您的建议。

最佳答案

在你的位置,我会尝试“腌制”(保存)我硬盘上的矩阵,关闭 python ,然后在命令行中重新打开腌制文件并在“新 python”实例上进行计算.

我会这样做,因为也许您的问题是在计算协方差之前。

import cPickle
import numpy
M = numpy.array([[1,2],[3,4]]) # here it will be your matrix
cPickle( M , open( "~/M.pic", "w") ) # here it's where you pickle the file

这里关闭 python。您的文件应作为“M.pic”保存在您的主目录中。

import cPickle
import numpy
M = cPickle.load( open( "~/M.pic", "r") )
M = numpy.coa( M )

如果仍然不起作用,请尝试为您的数据设置一个“良好”的数据类型。 numpy 接缝默认使用 'int64' 的 dtype 'float64'。这是巨大的,如果您不需要这种精度,您可能希望将其减少为“int32”或“float32”。

import numpy
M = numpy.array([[1,2],[3,4]] , dtype.float32 )

的确,我可以向您保证 C/Fortran 不是您的选择。 Numpy 已经用 C/Fortran 语言编写,并且可能是由比你我更聪明的人编写的;)

出于好奇,你的矩阵有多大?你的腌制文件有多大?

关于python - 看来我已经用完了 32 位地址空间。我有哪些选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8284350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com