我有一个运行数据集的算法,并创建一个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
如果我能成功创建并保存矩阵,那么它是否也能加载结果?是否有一些开销正在扼杀负载?有可能解决这个问题吗?
提前致谢,
答案 0 :(得分:1)
来自刚刚发布的numpy version 1.8, release candidate 1的说明:
IO与大文件的兼容性
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
大型NPZ文件&gt; 2GB可以在64位系统上加载。
所以你似乎遇到了一个刚刚解决过的已知错误。