输入输出
二进制文件
一般存储二进制文件的时候,直接保存的效果并不是很好,用numpy提供的函数进行保存可以很好地处理像数据类型,数组的类型,大小,就是说将数组数据保存到文件中
- npy格式:二进制文件
- npz格式:以压缩包的格式进行存储
- save():
import numpy as np
outfile =r'.\test.npy'
#存储数组数据
x=np.array([1,2,5])
# sava的第一个参数是文件名,注意这个文件名是一个npy的格式,第二个参数是数组名
np.save(outfile,x)
## 读取数据
loads= np.load(outfile)
print(loads)
- savez文件格式
这种存储的是将数据保存到压缩文件的格式,其中这种保存的格式还可以存储多个文件,到时候取得时候,会将数据保存到一个数组中,之前存储的时候的数据就是里面的数据,读取的时候就是按照保存的时候的数据名称’ar_[index]'来进行输出
import numpy as np
#创建文件对象
outfile =r'.\test.npz'
x=np.array([1,2,5])
y=np.array([2,3,4,5])
#保存数据
np.savez(outfile,x,y)
## 读取数据
loads= np.load(outfile)
# 读取数据的时候,是根据数组的名称的格式来读取
print(loads['arr_0'],loads['arr_1'])
文本文件和CSV文件
使用savetxt(),loadtxt(),genfromtxt(),读取文本文件
其中呢,genfromtxt()函数是可以对缺失数据处理的一种加载函数,这里面的没每个函数都可以包含多个参数的,下面使用例子将这些参数使用一下:
savetxt(fname,arr,fmt,delimiter,encoding…)
loadtxt(fname,dtype,skiprows,usecols,unpack)
- fname:文件名
- arr;数组名
- fmt:文件存取的数据格式
- delimiter:文件存储的分割形式,
- skiprows:跳过行数(一般在进行存储的时候,第一行是注释)
- usecols:取数组的那几列
- UNpack:将数据分拆给不同的数据,默认False
- fmt和delimiter参数
import numpy as np
outfile =r'.\test.txt'
x=np.array([1,2,3,4,5])
#里面的数据存储的形式都是'/'分开的
np.savetxt(outfile,x,fmt='%.1f',delimiter='/')
# 取数据的时候也是一样,注意分隔符
y=np.loadtxt(outfile,delimiter='/')
print(y)
- usecols和unpack
import numpy as np
outfile =r'.\test.txt'
x=np.array([[1,2,3,4,5],[2,3,4,5,7]])
np.savetxt(outfile,x,fmt='%.1f',delimiter='/')
#取第一列和第二列的数据
y=np.loadtxt(outfile,delimiter='/',usecols=(1,2))
print(y)
print("---")
# 将解耦的数据分给两个参数
p,q=np.loadtxt(outfile,delimiter='/',usecols=(1,2,),unpack=True)
print(p)
文件格式
设置文件的格式选项
- precision:设置浮点数的精度
- threshold:超过该数值将用“…’'隐藏
- linewidth:确定每一行的数后就换行
- suppres:选择浮点数的科学计数
import numpy as np
np.set_printoptions(precision=4)
x=np.array([2.4567897])
print(x)
#输出为4位小数点
np.set_printoptions(threshold=5)
y=np.array([1,2,3,4,56,7,8,9,7,5,4,32,3])
print(y)
#输出格式为[ 1 2 3 ... 4 32 3]
#get_printoptions()方法:获取输出的格式
#{'edgeitems': 3, 'threshold': 1000, 'floatmode': 'maxprec', 'precision': 8, 'suppress': False, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': None, 'legacy': False}