np.memmap作用
内存映像文件是一种将磁盘上的非常大的二进制数据文件当做内存中的数组进行处理的方式。NumPy实现了一个类似于ndarray的memmap对象,它允许将大文件分成小段进行读写,而不是一次性将整个数组读入内存。memmap也拥有跟普通数组一样的方法,因此,基本上只要是能用于ndarray的算法就也能用于memmap。
使用函数np.memmap并传入一个文件路径、数据类型、形状以及文件模式,即可创建一个新的memmap:
为存储在磁盘上的二进制文件中的数组创建内存映射。
内存映射文件用于访问磁盘上的大段文件,而无需将整个文件读入内存。NumPy的memmap是类似数组的对象。这与Python的mmap模块不同,后者使用类似文件的对象。
pandas的处理速度要比numpy慢,而遇到特别大的数组、矩阵时,numpy将数据读入内存也会发生IO内存不足,即便读入了内存操作也很慢,这时候用memmap。
memmap可以将大文件分小段读写。使用时,会先为磁盘上的数据创建一个映射,对映射赋值,然后保存即可将数据写入磁盘。读取时也是通过映射,将修改通过映射写入磁盘。
创建memmap
fp = np.memmap(filename, dtype=‘float32’, mode=‘w+’, shape=(3,4))
赋值写入memmap
fp[:] = data[:]
删除(或关闭)memmap
del fp
读取memmap
fpr = np.memmap(filename, dtype=‘float32’, mode=‘r’, shape=(3,4))
参考资料:
np.memmap作用