Numpy中的ndarray是一种新形式的Python内建类型。因此,它可以在需要时被继承。ndarray形成了许多有用类的基础。
np.memmap就是其中一种,它是内存映射文件。本质上就是使用C语言中的fseek随机访问文件的任何一个位置执行读写操作。当一个特别大的数组无法常驻内存时,np.memmap非常有用。

参数类型:

  • filename:字符串、文件或者path
  • dtype:默认为uint8,表示每个字节
  • mode:支持r+,r,w+,c四种文件打开方式,r表示只读方式打开文件爱你,r+表示可读可写,w+表示先覆盖一个已存在的文件然后可读可写,c表示可以对文件进行修改但是不会保存到磁盘。默认为r+。
  • offset:表示数组数据在文件中的偏移,此值应该是dtype类型的大小的整数倍。
  • shape:可以指定数组的维度,默认是一维数组。

memmap默认的文件打开方式是r+。

import numpy as npa = np.random.randint(0, 10, (3, 4), dtype=np.int32)
print(a)
a.tofile("haha.bin")
b = np.memmap("haha.bin", dtype=np.int32, shape=(3, 4))
print(b)
b[0, 0] = 100
del b  # 关闭文件,自动调用数组的finalize函数
b = np.memmap("haha.bin", dtype=np.int32, shape=(3, 4))
print(b)

输出为:

[[7 7 7 3][9 3 7 9][0 7 8 8]]
[[7 7 7 3][9 3 7 9][0 7 8 8]]
[[100   7   7   3][  9   3   7   9][  0   7   8   8]]

numpy数组和bytes互转

import numpy as npa = np.random.rand(3, 3).astype(np.float32)
print(a)
b = a.tobytes()
res = np.frombuffer(b, dtype=np.float32)
print(res)

参考资料

https://docs.scipy.org/doc/numpy/reference/arrays.classes.html

转载于:https://www.cnblogs.com/weiyinfu/p/10740529.html

np.memmap读取大文件相关推荐

  1. java 读取txt,java读取大文件

    java 读取txt,java读取大文件 package com.bbcmart.util; import java.io.File; import java.io.RandomAccessFile; ...

  2. Windows/Linux上使用fopen相关函数读取大文件

    在介绍读取大文件之前,先了解下<cstdint>文件,标准头文件,存放固定宽度整数类型,如int32_t, uint32_t,不管在32位上还是64位上,长度都为4个字节:int64_t, ...

  3. php读取大文件某行内容,php读取大文件最后几行数据的实现代码

    /* * 读取大文件最后几行数据 * by www.jbxue.com */ $file = $handledir.'/venocap.1'; $fp = fopen($file, "r&q ...

  4. pandas读取大文件(chunksize)并通过sqlalchemy写入MySQL数据库

    pandas读取大文件(chunksize)并通过sqlalchemy写入MySQL数据库 在pandas中读取表类文件的时候有一个参数chunksize,只要指定了这个参数的数值,那么得到的结果就不 ...

  5. php -- 读取大文件

    在PHP中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file.file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能.但当所操作的文件是一个比较大的 ...

  6. java 按行读取大文件文件内容_Java实现按行读取大文件

    Java实现按行读取大文件 String file = "F:" + File.separator + "a.txt"; FileInputStream fis ...

  7. php yield 导出文件,PHP yield 读取大文件

    今天来优化下读取大文件,在 PHP 读取大文件的时候,经常会出现内存不足的情况,如果文件过大的话,没法一次读取完,今天采用 yield 来实现大文件的读取.yield生成器是php5.5之后出现的,y ...

  8. python读取大文件-Python如何读取、拆分大文件

    简述 最近和第三方数据接触较多,数据量也开始陡增,从一开始的1KW行,最大到了1亿行,这让我这个常年处理"小数据'的人有点捉襟见肘.本来数据放在hive中也是可以操作的,但是有时候需求是做一 ...

  9. python读取大文件-python如何读取大文件以及分析时的性能优化小技巧

    在二代.三代测序背景下,分析人员难免会遇到解析超过1G.或者10G以上的文件.这里将给大家简单介绍下如何用python读取大文件,并给大家提两个优化代码的小建议. 首先,python 读取GB级大文件 ...

最新文章

  1. 聚焦触宝反侵权事件:中国创业者用什么护航海外市场大门
  2. Push Notification (1)Google C2DM 服务
  3. 【ECCV 2018】Facebook开发姿态转换模型,只需一张照片就能让它跳舞(视频)
  4. commons.apache
  5. mysql 更改root密码及 主机_设置更改root密码(远程,本地)、连接mysql、mysql常用命令...
  6. 241.为运算表达式设计优先级
  7. OC 教程 极光推送
  8. Java拼接sql,并组装成建表语句
  9. Linux下wine最新版源码编译
  10. C语言获取股票数据,c/c++开发分享获取贵州茅台2010年1月1号至今的股票交易数据,计算该股票历史数据的5日均线和30日均线...
  11. .考试倒计时44天!来提分啦!
  12. UA OPTI570 量子力学23 角动量基础
  13. 最常去的IT网站(技术类,资讯类,个人博客)
  14. 模拟电子技术200问
  15. 功能点:3秒倒计时自动跳转指定页面
  16. 基于Proteus无实物零基础STM32入门自学教程(七)--定时器点亮LED
  17. 基于JSP同城校友网的设计与实现
  18. python金融分析小知识(38)——Jupyter Notebook更改文件路径
  19. 玩转华为ENSP模拟器系列 | 通过FTP访问其他设备文件配置举例
  20. Qt编写可视化大屏电子看板系统22-平滑曲线图

热门文章

  1. 跑步与读书都废掉了...工作目前也在换新的.
  2. 第1章——操作系统概论
  3. C/C++ 中的指针
  4. SGI opengl source code download
  5. 《设计模式详解》行为型模式 - 观察者模式
  6. 【网络安全面试题】——文件目录穿越实现特权文件读取
  7. 深入理解字符,字符集,gbk,utf8
  8. 多数据源报表解析之简单多源报表
  9. 简单梳理帆软报表即决策系统的登录步骤 一
  10. java正则表达式去除空格_去掉字符串前后所有空格的正则表达式