发布于2019-08-07 12:59 阅读(728) 评论(0) 点赞(1) 收藏(3)
本文将介绍python numpy库下文件读写的三种方式,分别是:
1.tofile()和fromfile()
tofile()
将数组中的数据以二进制格式写进文件
语法格式:a.tofile(frame, sep='', format='%s')
frame : 文件、字符串
sep : 数据分割字符串,如果是空串,写入文件为二进制
format : 写入数据的格式
输出的数据不保存数组形状和元素类型等信息
fromfile()
读回数据函数
语法格式:np.fromfile(frame, dtype=np.float, count=‐1, sep='')
frame : 文件、字符串
dtype : 读取的数据类型
count : 读入元素个数,‐1表示读入整个文件
sep : 数据分割字符串,如果是空串,写入文件为二进制
函数读回数据时需要用户指定元素类型,并对数组的形状进行适当的修改
例子:
import numpy as np
a = np.arange(12).reshape(3,4)
a
'''
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
'''
a.tofile("a.txt")
b = np.fromfile("a.txt",dtype=np.int32)
b.reshape(3,4)
'''
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
'''
b
'''
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
'''
a.txt存入二进制内容
#注意:该方法需要读取时知道存入文件时数组的维度和元素类型,
#a.tofile()和np.fromfile()需要配合使用 可以通过元数据文件来存储额外信息
2.save()和load()
save()
numpy专用的二进制格式保存数据,它们会自动处理元素类型和形状等信息
语法格式:np.save(fname, array)
fname : 文件名,以.npy为扩展名
array : 数组变量
如果想将多个数组保存到一个文件中,可以使用savez()
语法格式:np.savez(fname, array1,array2...)
fname : 文件名,以.npz为扩展名
非关键字参数传递的数组会自动起名为arr_0、arr_1、...
load()
自动识别npz文件,并且返回一个类似于字典的对象,可以通过数组名作为键获取数组的内容
语法格式:np.load(fname)
fname : 文件名,以.npy为扩展名,压缩扩展名为.npz
例:
a = np.arange(50).reshape(5,5,2)
np.save("a.npy", a)
b = np.load('a.npy')
b
'''
array([[[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9]],
[[10, 11],
[12, 13],
[14, 15],
[16, 17],
[18, 19]],
[[20, 21],
[22, 23],
[24, 25],
[26, 27],
[28, 29]],
[[30, 31],
[32, 33],
[34, 35],
[36, 37],
[38, 39]],
[[40, 41],
[42, 43],
[44, 45],
[46, 47],
[48, 49]]])
'''
c = np.arange(0,1.0,0.1)
np.savez("c.npz",a,sin_array=c)
b = np.load('c.npz')
b["arr_0"]
'''
array([[[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9]],
[[10, 11],
[12, 13],
[14, 15],
[16, 17],
[18, 19]],
[[20, 21],
[22, 23],
[24, 25],
[26, 27],
[28, 29]],
[[30, 31],
[32, 33],
[34, 35],
[36, 37],
[38, 39]],
[[40, 41],
[42, 43],
[44, 45],
[46, 47],
[48, 49]]])
'''
b["sin_array"]
'''
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
'''
3.savetxt()和loadtxt()
读写1维和2维数组的文本文件
可以用于读写CSV格式的文本文件
savetxt()
语法格式:np.savetxt(frame, array, fmt='%.18e', delimiter=None)
frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件
array : 存入文件的数组
fmt : 写入文件的格式,例如:%d %.2f,缺省默认“%.18e”
delimiter : 分割字符串,默认是空格
loadtxt()
语法格式:np.loadtxt(frame, dtype=np.float, delimiter=None,unpack=False)
frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件
dtype : 数据类型,可选
delimiter : 分割字符串,默认是任何空格
unpack : 如果True,读入属性将分别写入不同变量
例子:
a = np.arange(50).reshape(5,10)
np.savetxt("a.cvs", a, fmt = "%d", delimiter=",")
a.cvs
b = np.loadtxt("a.cvs",delimiter=",")
b
'''
array([[ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.],
[10., 11., 12., 13., 14., 15., 16., 17., 18., 19.],
[20., 21., 22., 23., 24., 25., 26., 27., 28., 29.],
[30., 31., 32., 33., 34., 35., 36., 37., 38., 39.],
[40., 41., 42., 43., 44., 45., 46., 47., 48., 49.]])
'''
作者:紫薇
链接:https://www.pythonheidong.com/blog/article/11093/719ef609e985b7858e3d/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!