Numpy之数据保存与读取
Posted jclian91
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Numpy之数据保存与读取相关的知识,希望对你有一定的参考价值。
??在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='
', 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之数据保存与读取的主要内容,如果未能解决你的问题,请参考以下文章