Numpy向文件写入CSV和读取
1、一维二维
写入函数
np.savetxt(frame, array, fmt=“%.18e”, delimiter=None)
frame:要存入的文件、文件名、或生成器,可以是.gz或.bz2的压缩文件
arrry:存入文件的数组
fmt:要存储的数据格式。
delimiter:分隔字符串,默认是空格。
问题描述
- 保存到CSV文件时出错
PermissionError: [Errno 13] Permission denied: ‘a.csv’
原因分析:
- python脚本往CSV文件写入数据时手动打开文件导致写入终止
解决办法
- 关闭手动打开文件,重新运行即可
读取数据函数
np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
参数 | 解释 |
---|---|
frame | 要读取的文件、文件名或生成器。如果文件扩展名是.gz或.bz2,则首先将文件解压缩。 请注意,生成器应返回字节字符串。 |
dtype | 可选,结果数组的数据类型; 默认值:float。 |
delimiter | 可选,用于分隔值的字符串。 |
skiprows | 可选,跳过第几行,包括注释; 默认值:0 |
usecols | 可选,要读取的列,第一列为0,默认值为“None” |
unpack | 可选,如果是True,则对返回的数组进行转置,默认值为False |
CSV局限性
两个函数只能存取一维数组和二维数组
2、任意维度函数
写入函数
a.tofile(frame,sep=‘’,format=‘%s’)
参数 | 解释 |
---|---|
frame | 文件、字符串 |
sep | 数据分割字符串,如果是空串,写入文件为二进制‘ |
format | 写入数据的格式 |
读取函数
np.fromfile(frame,dtype=float,count=-1,sep=‘’)
参数 | 解释 |
---|---|
frame | 文件、字符串 |
dtype | 读取的数据类型 |
count | 读入元素个数,-1表示读入整个文件 |
sep | 数据分割字符串,如果是空串,写入文件为二进制 |
注意
该方法需要读取时知道存入文件时数组的维度和元素类型
a.tofile()和np.fromfile()需要配合使用
可以通过元数据文件来存储额外信息
Numpy便捷文件存取
存:np.save(fname,array)或np.savez(fname,array)
参数 | 解释 |
---|---|
fname | 文件名,以.npy为扩展名,压缩扩展名为.npz |
array | 数组变量 |
取:np.load(fname)
参数 | 解释 |
---|---|
fname | 文件名,以.npy为扩展名,压缩扩展名为.npz |
存取方法的选择
便捷式存取npy文件一般用于程序中间的数据缓存,可选用
若与其他文件对接就可以使用其他2种方法