Python Pickle 大小限制

9
我希望您能翻译以下内容:我想要储存一个大的numpy数组(1810392*255)。但是在储存时出现了错误。
[...]error: 'i' format requires -2147483648 <= number <= 2147483647

代码:

import numpy
import pickle
l=numpy.zeros((1810392,255))
f=open('file.pkl','wb')
pickle.dump(l,f,2)

有大小限制吗?有什么解决办法吗?如果不必要的话,我不想使用 hdf5 或其他非Python内置的东西。

我也尝试过 numpy.saveznumpy.savez_compressed

import numpy
l=numpy.zeros((1810392,255))
numpy.savez_compressed('file.npz',l)

保存操作正常,但尝试加载数据时出现错误。

代码:

import numpy
l=numpy.load('file.npz')
l['arr_0']

我需要使用numpy.savez而不是numpy.save,因为我想存储额外的数据。


已在64位MacOS和64位Linux上进行了测试。 - dlangenk
当您尝试使用numpy.load()时,您遇到了什么错误? - pypat
http://pastebin.com/ms3xhsaV - dlangenk
你可以在numpy中创建一个问题。他们写道# XXX: we can probably chunk this to avoid the memory hit. 或者修改并贡献:https://github.com/numpy/numpy - User
我在 github 上创建了一个问题。 - dlangenk
1
解决方法: import numpy f=open('file.npy','wb') l=numpy.zeros((1810392,255)) numpy.save(f,l) [可选:numpy.save(f,...)] f.close()再次打开: import numpy f=open('file.npy','rb') l=numpy.load(f) [可选:m=numpy.load(f)] f.close() - dlangenk
1个回答

0

我遇到了类似的问题。我得到的最大pickle文件是155Mb。如果你计划添加更多数据,我建议你使用像sqlite3或firebase这样的数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接