2013-09-27 34 views
1

我有通過一個數據集運行,並創建一個SciPy的稀疏矩陣而這又是使用保存的算法:numpy的負載OverflowError:長度太大

numpy.savez

和文件被打開,如:

open(file, 'wb')

基質可以得到相當大量的磁盤空間(花了大約20 GB運行30天)

在此之後,這些矩陣被加載到其他應用,如:

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

從Notes上剛剛發表numpy version 1.8, release candidate 1

IO compatibility with large files

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

Large NPZ files >2GB can be loaded on 64-bit systems.

因此,看來你擊中剛剛解決了一個已知的bug。