我想pickle一个大的(1810392 * 255)numpy数组。但是pickle时我得到一个错误:
[...]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.savez
和numpy.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
,因为我想存储额外的数据。
1条答案
按热度按时间jhdbpxl91#
我也遇到过类似的问题,我得到的pickle文件最大为155Mb,如果你打算添加更多的数据,我建议你使用sqlite3或firebase这样的数据库。