Numpy Load OverflowError:长度太大

时间:2013-09-27 15:02:52

标签: numpy matrix persistence scipy

我有一个运行数据集的算法,并创建一个scipy稀疏矩阵,然后使用以下方法保存:

numpy.savez

并且文件已打开,例如:

open(file, 'wb')

矩阵可以获得相当大的磁盘空间(30天内运行大约20 GB)

之后,这些矩阵被加载到其他应用程序中,例如:

file = open(path_to_file, 'rb')
matrix = load(file)
data = matrix['arr_0']
ind = matrix['arr_1']
indptr = matrix['arr_2']

连续10天工作正常。

当运行30天的数据集时,矩阵也已成功创建并保存。

但是在尝试加载时我得到了错误:

Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/ubuntu/recsys/Scripts/Neighborhood/s3_CRM_neighborhood.py", line 76, in <module>
    data = matrix['arr_0']
  File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 241, in __getitem__
    return format.read_array(value)
  File "/usr/lib/python2.7/dist-packages/numpy/lib/format.py", line 458, in read_array
    data = fp.read(int(count * dtype.itemsize))
OverflowError: length too large

如果我能成功创建并保存矩阵,那么它是否也能加载结果?是否有一些开销正在扼杀负载?有可能解决这个问题吗?

提前致谢,

1 个答案:

答案 0 :(得分:1)

来自刚刚发布的numpy version 1.8, release candidate 1的说明:

  

IO与大文件的兼容性

     

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     

大型NPZ文件&gt; 2GB可以在64位系统上加载。

所以你似乎遇到了一个刚刚解决过的已知错误。