Python报Memory Error或者是numpy报ValueError: array is too big; `arr.size * arr.dtype.itemsize` 的解决方法
4,206 阅读
Python做数据处理效率很高,尤其是在解决一些小问题时候,但是有时候一些莫名奇妙的错误的确让人很烦。本文记录一个这样的小问题。

前段时间,我在一台新的Windows机器上使用Python做数据处理的时候遇到了一个非常奇怪的问题,就是尽管本机是16GB的内存,但是依然无法处理较大的数据,数据量一旦超过一定阈值,就会报内存不足。一开始我也很奇怪为什么会这样,通过任务管理器的性能监控可以看到Python程序一旦开始运行,内存开始上涨到接近2GB的时候就会崩溃,报错。
我用的是NumPy读取数据,错误如下:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mtrand.pyx", line 745, in numpy.random.mtrand.RandomState.randint
File "_bounded_integers.pyx", line 1355, in numpy.random._bounded_integers._rand_int32
ValueError: array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.
