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')
如果你想将多个数组保存到一个文件中的话,可以使用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=, 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)