在pandas使用的25个技巧中介绍了几个常用的Pandas的使用技巧,不少技巧在机器学习和深度学习方面很有用处。本文将会介绍Numpy在数据保存和读取方面的内容,这些在机器学习和深度学习方向也大有用处,因为通常我们会采用Numpy和Pandas处理数据,尤其是Pytorch,它和Numpy的结合更为紧密。

  我们先介绍Numpy的几个函数:

numpy.savez(file, *args, **kwds)
file:文件名/文件路径
*args:要存储的数组,可以写多个,如果没有给数组指定Key,Numpy将默认从'arr_0','arr_1'的方式命名 numpy.savez_compressed
使用办法和numpy.savez一样,但是保存的文件会有压缩,可以减小文件大小。 numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)
保存为txt文件,fname为文件名称,X为numpy中的变量,fmt为保存格式,delimiter为分隔符。

  我们的示例Python代码如下:

# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2020/3/14 15:14
import numpy as np # 创建1000*1000的矩阵,元素为0-1之间的随机数
matrix = np.random.rand(1000, 1000) # 使用save_z和save_compressed保存maxtrix
np.savez("rand_matrix", matrix=matrix)
np.savez_compressed("rand_matrix_compressed", matrix=matrix) # 保存为txt格式
np.savetxt("rand_matrix.txt", matrix, fmt="%.6f", delimiter=",")

需要注意的是,savetxt函数最多只能保存2维矩阵,3维以上就会报错,rand_matrix.txt中的部分内容如下:



我们看一下保存的文件大小:



可以看到,用savez_compressed保存的文件会比savez保存的文件小,这是因为该函数在文件打包时进行了压缩。

  接着是读取npz文件中的内容,我们以rand_matrix.npz为例,示例代码如下:

# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2020/3/14 15:39
import numpy as np # 读取npz文件
mat = np.load("rand_matrix.npz")["matrix"] # 输出mat的相关信息
print(mat.shape)
print(mat[:5, :5])

输出内容如下:

(1000, 1000)
[[0.92338524 0.08321306 0.60686435 0.57764367 0.93594528]
[0.10552397 0.98878422 0.5237701 0.03220633 0.85022735]
[0.06755187 0.18767634 0.24769326 0.83413499 0.69020446]
[0.20900975 0.47176702 0.9302718 0.47056681 0.76258641]
[0.46927451 0.72896195 0.50372099 0.58216099 0.58198673]]

  最后,我们将numpy中的矩阵保存为pickle文件,示例代码如下:

# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2020/3/14 15:45
import numpy as np
import pickle # 创建1000*1000的矩阵,元素为0-1之间的随机数
matrix = np.random.rand(1000, 1000) # 保存为pickle文件
with open("rand_matrix.pk", "wb") as f:
pickle.dump(matrix, f)

生成的文件大小如下:



可以发现生成的pickle文件和numpy中的savez函数保存的文件大小一样。

  本次分享到此结束,感谢大家阅读~

Numpy之数据保存与读取的更多相关文章

  1. C# 结构体和List<T>类型数据转Json数据保存和读取

    C#  结构体和List<T>类型数据转Json数据保存和读取 一.结构体转Json public struct FaceLibrary { public string face_name ...

  2. Java+MySql图片数据保存与读取的具体实例

    1.创建表: drop table if exists photo;CREATE TABLE photo (    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ...

  3. Numpy数组的保存与读取

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

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

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

  5. Objective-C数据保存和读取

    一.NSCoding协议中的Archiving和Unarchiving (1)Archiving一个object,会记录这个对象的所有的properties到filesystem: (2)Unarch ...

  6. C/C++语言之由数字26引起的文件的数据保存与读取调试。

    首先在VS2010中遇到的问题是,建立了一个结构体 struct position{ int x; int y; }: 然后用此结构体声明一个数组rout[8]; for(int i=0;i<8 ...

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

    小书匠 深度学习  文章目录: 1.保存为二进制文件(.npy/.npz) numpy.save numpy.savez numpy.savez_compressed 2.保存到文本文件 numpy. ...

  8. Python numpy数据的保存和读取

    在科学计算的过程中,往往需要保存一些数据,也经常需要把保存的这些数据加载到程序中,在 Matlab 中我们可以用 save 和 lood 函数很方便的实现.类似的在 Python 中,我们可以用 nu ...

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

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

随机推荐

  1. 用Excel做数据分析常用函数(数据清理、关联匹配……)

    本文总结在使用Excel进行数据分析时,最常用的功能和函数. Excel的功能和函数非常多,用进废退,除了学习基本的函数和功能,最重要的是遇到问题可以快速的搜索并解决. 首先Excel可以处理的数据量 ...

  2. @EnableWebMvc WebMvcConfigurer CorsConfig

    package me.zhengjie.core.config; import org.springframework.context.annotation.Configuration; import ...

  3. python库之-------Pandas

    包括两个数据结构:DataFrame和Series 官方文档地址: pandas https://pandas.pydata.org/pandas-docs/stable/index.html ser ...

  4. 机器人可以拥有社交智能吗?——微软雷德蒙研究院院长Eric Horvitz与他的个人虚拟助理之梦

    Horvitz与他的个人虚拟助理之梦" title="机器人可以拥有社交智能吗?--微软雷德蒙研究院院长Eric Horvitz与他的个人虚拟助理之梦">编者按:到 ...

  5. 洛谷-P3809-后缀排序(后缀数组)

    看了求后缀数组的倍增法之后很快就理解了,但是自己写的倍增法用map排序还是超时了.然后看了两天别人写的模板,题目是通过了,但感觉代码还是半懂半背的.以后多熟悉熟悉吧: 后缀数组 #include &q ...

  6. C语言学习笔记之动态分配数组空间

    本文为原创文章,转载请标明出处 高级语言写多了,再拿起C语言的时候,自己已经傻了... C语言中数组大小不能为变量,即使这个变量已经被赋过值了,应该使用malloc方法进行数组空间动态分配. 如下: ...

  7. CRISPR/Cas9|InParanoid|orthoMCL|PanOCT|pan genome|meta genome|Core gene|CVTree3|

    生命组学: 泛基因组学:用于描述一个物种基因组,据细菌基因组动力学,因为细菌的基因漂移使得各个细菌之间的基因组差异很大,(单个细菌之间的基因组差异是以基因为单位的gain&loss,而人类基因 ...

  8. 实战:CentOS 7.2 / Zabbix3.4安装graphtrees

    众所周知的 Zabbix图形显示问题,决定使用graphtrees 插件. 环境:CentOS7.2 + Zabbix 3.4 1)首先切换到root用户以获得足够的权限将资源下载到 /usr/sha ...

  9. NSURLSession与NSURLConnection区别

    1. 使用现状      NSURLSession是NSURLConnection 的替代者,在2013年苹果全球开发者大会(WWDC2013)随ios7一起发布,是对NSURLConnection进 ...

  10. 百度测试架构师眼中的百度QA

    百度测试架构师眼中的百度QA(一)   发表于2013-04-09 15:31| 4004次阅读| 来源架构师Jack的个人空间| 13 条评论| 作者董杰 百度测试QA 摘要:一直以来百度质量部在业 ...