numpy.memmap 用法与注意事项
2023-12-13 08:47:04
当处理大数组时,内存可能不够用。numpy 提供了一个函数 np.memmap() 让我们可以处理大数组。memmap = memory mapped
np.memmap() 可以读取大磁盘文件中的一小段到内存,所以它占内存较小
参数说明:
import numpy as np
from tempfile import mkdtemp # 用于创建临时文件夹,真实使用时可以指定自己的文件夹
import os
# 创建数组
data = np.arange(16, dtype='float32')
data.resize((4,4))
# 初始化可以写入数据的文件
filename = os.path.join(mkdtemp(), 'newfile.bin')
fpath = np.memmap(filename, dtype='float32', mode='w+', shape=(4,4))
fpath
>>>
memmap([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]], dtype=float32)
# 数组数据写入文件中
fpath[:] = data[:]
# 指定位置更新数据
fpath[0,0] = 100
# 将内存数据写到磁盘
fpath.flush()
print(fpath)
>>>
[[ 100. 1. 2. 3.]
[ 4. 5. 6. 7.]
[ 8. 9. 10. 11.]
[12. 13. 14. 15.]]
# 读取文件,记住需要指定dtype,不然会以默认的uint8读取数据
newfp = np.memmap(filename, dtype='float32', mode='r', shape=(4,4))
newfp
>>>
memmap([[ 100., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[12., 13., 14., 15.]], dtype=float32)
未指定 dtype 和 shape 会输出错误数据:
参考:
numpy.memmap
NumPy Input and Output: memmap() function
Pitfalls to avoid with np.memmap
文章来源:https://blog.csdn.net/weixin_40994552/article/details/134952921
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!