小书匠 深度学习 

文章目录:

在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多.

下面就常用的保存数据到二进制文件和保存数据到文本文件进行介绍:

1.保存为二进制文件(.npy/.npz)

numpy.save

保存一个数组到一个二进制的文件中,保存格式是.npy

参数介绍

numpy.save(file, arr, allow_pickle=True, fix_imports=True)

file:文件名/文件路径

arr:要存储的数组

allow_pickle:布尔值,允许使用Python pickles保存对象数组(可选参数,默认即可)

fix_imports:为了方便Pyhton2中读取Python3保存的数据(可选参数,默认即可)

使用

  1. >>> import numpy as np 

  2. #生成数据 

  3. >>> x=np.arange(10) 

  4. >>> x 

  5. array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 


  6. #数据保存 

  7. >>> np.save('save_x',x) 


  8. #读取保存的数据 

  9. >>> np.load('save_x.npy') 

  10. array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 

numpy.savez

这个同样是保存数组到一个二进制的文件中,但是厉害的是,它可以保存多个数组到同一个文件中,保存格式是.npz,它其实就是多个前面np.save的保存的npy,再通过打包(未压缩)的方式把这些文件归到一个文件上,不行你去解压npz文件就知道了,里面是就是自己保存的多个npy.

参数介绍

numpy.savez(file, *args, **kwds)

file:文件名/文件路径

*args:要存储的数组,可以写多个,如果没有给数组指定Key,Numpy将默认从'arr_0','arr_1'的方式命名

kwds:(可选参数,默认即可)

使用

  1. >>> import numpy as np 

  2. #生成数据 

  3. >>> x=np.arange(10) 

  4. >>> x 

  5. array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 

  6. >>> y=np.sin(x) 

  7. >>> y 

  8. array([ 0. , 0.84147098, 0.90929743, 0.14112001, -0.7568025 , 

  9. -0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.41211849]) 


  10. #数据保存 

  11. >>> np.save('save_xy',x,y) 


  12. #读取保存的数据 

  13. >>> npzfile=np.load('save_xy.npz') 

  14. >>> npzfile #是一个对象,无法读取 

  15. <numpy.lib.npyio.NpzFile object at 0x7f63ce4c8860> 


  16. #按照组数默认的key进行访问 

  17. >>> npzfile['arr_0'] 

  18. array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 

  19. >>> npzfile['arr_1'] 

  20. array([ 0. , 0.84147098, 0.90929743, 0.14112001, -0.7568025 , 

  21. -0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.41211849]) 

更加神奇的是,你可以不适用Numpy默认给数组的Key,而是自己给数组有意义的Key,这样就可以不用去猜测自己加载数据是否是自己需要的.

  1. #数据保存 

  2. >>> np.savez('newsave_xy',x=x,y=y) 


  3. #读取保存的数据 

  4. >>> npzfile=np.load('newsave_xy.npz') 


  5. #按照保存时设定组数key进行访问 

  6. >>> npzfile['x'] 

  7. array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 

  8. >>> npzfile['y'] 

  9. array([ 0. , 0.84147098, 0.90929743, 0.14112001, -0.7568025 , 

  10. -0.95892427, -0.2794155 , 0.6569866 , 0.98935825, 0.41211849]) 

简直不能太爽,深度学习中,有时候你保存了训练集,验证集,测试集,还包括他们的标签,用这个方式存储起来,要啥加载啥,文件数量大大减少,也不会到处改文件名去.

numpy.savez_compressed

这个就是在前面numpy.savez的基础上加了压缩,前面我介绍时尤其注明numpy.savez是得到的文件打包,不压缩的.这个文件就是对文件进行打包时使用了压缩,可以理解为压缩前各npy的文件大小不变,使用该函数比前面的numpy.savez得到的npz文件更小.

注:函数所需参数和numpy.savez一致,用法完成一样.

2.保存到文本文件

numpy.savetxt

保存数组到文本文件上,可以直接打开查看文件里面的内容.

参数介绍

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)

fname:文件名/文件路径,如果文件后缀是.gz,文件将被自动保存为.gzip格式,np.loadtxt可以识别该格式

X:要存储的1D或2D数组

fmt:控制数据存储的格式

delimiter:数据列之间的分隔符

newline:数据行之间的分隔符

header:文件头步写入的字符串

footer:文件底部写入的字符串

comments:文件头部或者尾部字符串的开头字符,默认是'#'

encoding:使用默认参数

使用

  1. >>> import numpy as np 

  2. #生成数据 

  3. >>> x = y = z = np.ones((2,3)) 

  4. >>> x 

  5. array([[1., 1., 1.], 

  6. [1., 1., 1.]]) 


  7. #保存数据 

  8. np.savetxt('test.out', x) 

  9. np.savetxt('test1.out', x,fmt='%1.4e') 

  10. np.savetxt('test2.out', x, delimiter=',') 

  11. np.savetxt('test3.out', x,newline='a') 

  12. np.savetxt('test4.out', x,delimiter=',',newline='a') 

  13. np.savetxt('test5.out', x,delimiter=',',header='abc') 

  14. np.savetxt('test6.out', x,delimiter=',',footer='abc') 

保存下来的文件都是友好的,可以直接打开看看有什么变化.

numpy.loadtxt

根据前面定制的保存格式,相应的加载数据的函数也得变化.

参数介绍

numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes')

fname:文件名/文件路径,如果文件后缀是.gz.bz2,文件将被解压,然后再载入

dtype:要读取的数据类型

comments:文件头部或者尾部字符串的开头字符,用于识别头部,尾部字符串

delimiter:划分读取上来值的字符串

converters:数据行之间的分隔符

.......后面不常用的就不写了

使用

  1. np.loadtxt('test.out') 

  2. np.loadtxt('test2.out', delimiter=',') 

参考资料:

官方API-Routines

Numpy中数据的常用的保存与读取方法的更多相关文章

  1. Python Numpy中数据的常用的保存与读取方法

    在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件 ...

  2. Numpy中数据的常用的保存与读取

    保存到文本文件numpy.savetxt()numpy.loadtxt() import numpy as np x= np.arange(0,10,0.1) np.savetxt('save_x', ...

  3. JavaScript中,有三种常用的绑定事件的方法

    要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有三种常用的 ...

  4. Java中几种常用数据类型之间转换的方法

    Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...

  5. numpy中数据合并,stack ,concentrate,vstack,hstack

    在python的numpy库中有一个函数np.stack(), 看过一些博文后觉得别人写的太复杂,然后自己有了一些理解之后做了一些比较简单的解释 np.stack 首先stack函数用于堆叠数组,其调 ...

  6. [转]numpy中数据合并,stack ,concentrate,vstack,hstack

    转自:https://www.cnblogs.com/onemorepoint/p/9541761.html 在python的numpy库中有一个函数np.stack() np.stack 首先sta ...

  7. numpy中的一些常用的关键字用法

    1.np.full() 原型:numpy.full(shape, fill_value, dtype=None, order='C') eg: 2.np.flatten():该函数返回一个折叠成一维的 ...

  8. Numpy数组的保存与读取方法

    1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 np.save(&quo ...

  9. Matlab数据处理——数据的保存和读取方法操作

    1:dlmwrite()函数保存成txt文件 使用方法:      dlmwrite('filename', M)      使用默认分隔符“,”将矩阵M写入文本文件filename中:      d ...

随机推荐

  1. RGB的光的三原色、品红黄青颜料的三原色

    学习了祁连山老师讲的光与色的基础知识,觉得收获颇多,所以记下来光与色的知识点. 首先提问大家一个问题:照片中物体的颜色就是它的固有色么?(请从色光和物体固有色的角度回答) 这个问题在看完下面的总结后相 ...

  2. xml文件操作帮助类

    xml文件的节点值获取和节点值设置 /// <summary> /// 保存单个点节点的值 /// </summary> /// <param name="Up ...

  3. Ansible--Ansible之Playbook

    Ansible之Playbook Playbook介绍 playbook参考文档 Playbook与ad-hoc相比,是一种完全不同的运用ansible的方式,类似与saltstack的state状态 ...

  4. Cheat Engine 特征码

    打开游戏 引用自动注入 搜索特征码 特征码,是游戏运行中,唯一的汇编代码 验证,特征码是游戏中唯一代码 添加特征码 添加特征码,以及金钱只增不减代码 进行激活测试 特征码,只有在游戏过程中才会执行到 ...

  5. Java JDBC结果集的处理

    结果集指针的移动 while (resultSet.next()){ //...... } 指针最初指向第一条记录之前,next()是指向下一个位置,返回的是boolean值,true表示有内容(记录 ...

  6. 使用SAP CRM中间件XIF(External Interface)一步步创建服务订单

    tcode WE19, choose an existing IDOC in the system: Just change the existing IDOC Service Order ID to ...

  7. Microsoft SQL Server 2012安装说明

    Microsoft SQL Server 2012安装说明 环境:Windows8, Windows7, WinVista, Win2003, WinXP Microsoft SQL Server 2 ...

  8. Odoo日历视图详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826148.html 一:日历视图定义 根元素为<calendar>. 主要的属性有:    ...

  9. httprunner学习8-validate校验器

    前言 在一个完整的测试用例中,断言是必不可少的,断言是拿实际结果和期望结果去比较,在httprunner中用validate来对比测试结果. validate校验器 在httprunner的源码里,u ...

  10. C++ - STL - map的基础操作

    STL - map常用方法 map简述 map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,其作用类似于 ...