numpy学习(五)——文件的保存和读写(np.save()、np.load()、np.savez()、np.savetxt()、np.loadtxt())

NumPy提供了多种存取数组内容的文件操作函数。保存数组数据的文件可以是二进制格式或者文本格式。

参考链接

(1)np.save()和np.load()

np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中。
他们会自动处理元素类型和形状等信息

np.save(file, arr, allow_pickle=True, fix_imports=True)
解释:Save an array to a binary file in NumPy .npy format。以“.npy”格式将数组保存到二进制文件中。
参数:
file 要保存的文件名称,需指定文件保存路径,如果未设置,保存到默认路径。其文件拓展名为.npy
arr 为需要保存的数组,也即把数组arr保存至名称为file的文件中。

np.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding=‘ASCII’)
解释:Load arrays or pickled objects from .npy, .npz or pickled files.

#存储数组数据, .npy文件
import numpy as np


import os
os.chdir(r'C:\python数据分析')
ar = np.random.rand(5,5)
print(ar)
np.save('arraytest.npy',ar)#如果文件路径末尾没有扩展名.npy,该扩展名会被自动加上。
#也可以直接np.save(r'C:\python数据分析\arraytest.npy',ar)


在这里插入图片描述
打开之后是乱码
在这里插入图片描述

#读取数组数据, .npy文件
ar_load = np.load('arraytest.npy')
print(ar_load)
#也可以直接np.load(r'C:\python数据分析\arraytest.npy')

在这里插入图片描述
(2)np.savez()和np.load()

如果你想将多个数组保存到一个文件中的话,可以使用numpy.savez函数。savez函数的第一个参数是文件名,其后的参数都是需要保存的数组,也可以使用关键字参数为数组起一个名字,非关键字参数传递的数组会自动起名为arr_0, arr_1, …。
savez函数输出的是一个压缩文件(扩展名为npz),其中每个文件都是一个save函数保存的npy文件,文件名对应于数组名。
load函数自动识别npz文件,并且返回一个类似于字典的对象,可以通过数组名作为关键字获取数组的内容。
——————
np.savez(file, *args, **kwds)
Docstring:
Save several arrays into a single file in uncompressed .npz format.

ar1 = np.random.rand(2,3)
ar2 = np.arange(4)
np.savez(r'C:\python数据分析\arraytest1.npz',ar1,ar2)

r = np.load(r'C:\python数据分析\arraytest1.npz')
print(r)
print(r['arr_0'])

在这里插入图片描述

如果你用解压软件打开files.npz文件的话,会发现其中有两个文件:arr_0.npy, arr_1.npy,其中分别保存着数组ar1,ar2的内容。

(3)np.savetxt()和np.loadtxt()

np.loadtxt和np.savetxt可以读写1维和2维数组的文本文件:
同时可以指定各种分隔符、针对特定列的转换器函数、需要跳过的行数等。
——
注意:只能处理 1维和2维数组。可以用于CSV格式文本文件
——
np.savetxt(fname, X, fmt=’%.18e’, delimiter=’ ‘, newline=’\n’, header=’’, footer=’’, comments=’# ‘, encoding=None)
Docstring:
Save an array to a text file.
————
np.loadtxt(fname, dtype=<class ‘float’>, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=‘bytes’, max_rows=None)

ar1 = np.random.rand(2,3)
np.savetxt(r'C:\python数据分析\arraytest2.txt',ar1,delimiter=',')
#写入的时候指定逗号分割,则读取的时候也要指定逗号分割

在这里插入图片描述

ar1_load = np.loadtxt(r'C:\python数据分析\arraytest2.txt',delimiter=',')#指定逗号分割符
print(ar1_load)
print(ar1_load.dtype)

在这里插入图片描述

#.csv格式
ar1 = np.random.rand(2,3)
np.savetxt(r'C:\python数据分析\arraytest2.csv',ar1,delimiter=',')#csv一定时逗号分隔符

在这里插入图片描述

ar1_load = np.loadtxt(r'C:\python数据分析\arraytest2.csv',delimiter=',')
print(ar1_load)
print(ar1_load.dtype)

在这里插入图片描述

ar1 = np.random.rand(2,3)
np.savetxt(r'C:\python数据分析\arraytest2.txt',ar1,fmt='%.2f')#使用默认分割符(空格),保留两位小数

print(ar1)

在这里插入图片描述
在这里插入图片描述

ar1_load = np.loadtxt(r'C:\python数据分析\arraytest2.txt')
print(ar1_load)
print(ar1_load.dtype)

在这里插入图片描述

  • 104
    点赞
  • 504
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值