【发布时间】:2019-01-15 18:11:50
【问题描述】:
我需要在内存中保存一个非常大的向量,大小约为 10**8,并且我需要快速随机访问它。 我尝试使用numpy.memmap,但遇到如下错误:
RuntimeWarning: overflow encountered in int_scalars bytes = long(offset + size*_dbytes)
fid.seek(bytes - 1, 0): [Errno 22] Invalid argument
好像memmap用的很长,我的向量长度太大了。
有没有办法克服这个问题并使用 memmap?或者有什么好的选择?
谢谢
【问题讨论】:
-
关于您的描述的某些内容没有意义。一个有符号的
long至少有32个字节,它可以存储的最大数比2*10**9略大。如果您的数组大小在10**8的数量级上,则应该没有问题。 -
10 ** 8 * 4 的确切大小,我在每个单元格中使用 float64,所以它的总和大于 long 10 ** 9。
-
@B.M.感谢您的建议,我检查了 Dask 数组,但似乎它们是不可变的,因此不适合我的目的,Dask 是否提供一种可变数组?
标签: python python-3.x numpy out-of-memory bigdata