是否可以创建.npy文件而不先在内存中分配相应的数组?
我需要创建并使用大型numpy数组,这个数组太大而无法在内存中创建.Numpy支持内存映射,但据我所知,我的选项是:
使用numpy.memmap创建memmapped文件.这会直接在磁盘上创建文件而不分配内存,但不存储元数据,所以当我稍后重新映射文件时,我需要知道它的dtype,形状等.在下面,请注意不指定形状结果在memmap中被解释为平面数组:
In [77]: x=memmap('/tmp/x', int, 'w+', shape=(3,3))
In [78]: x
Out[78]:
memmap([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
In [79]: y=memmap('/tmp/x', int, 'r')
In [80]: y
Out[80]: memmap([0, 0, 0, 0, 0, 0, 0, 0, 0])
Run Code Online (Sandbox Code Playgroud)在内存中创建一个数组,使用numpy.save保存,之后可以在memmapped模式下加载.这会将元数据与磁盘上的数组数据一起记录,但需要为整个阵列分配至少一次内存.