1

我有一个算法,它通过数据集运行并创建一个 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

如果我可以成功创建并保存矩阵,它不应该也能加载结果吗?是否有一些开销会杀死加载?有可能解决这个问题吗?

提前致谢,

4

1 回答 1

1

从刚刚发布的numpy 版本 1.8 的注释中,候选版本 1

IO与大文件的兼容性

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

>2GB 的大型 NPZ 文件可以在 64 位系统上加载。

因此,您似乎遇到了一个刚刚解决的已知错误。

于 2013-09-30T15:50:13.400 回答