程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-05(1)

python机器学习之十三 numpy库下的文件读写

发布于2019-08-07 12:59     阅读(583)     评论(0)     点赞(1)     收藏(3)


 本文将介绍python numpy库下文件读写的三种方式,分别是:  

  1. tofile()和fromfile()  
  2. save()和load()  
  3. savetxt()和loadtxt()

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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)