简介
NumPy能够读写磁盘中的文本数据或二进制数据。这一点在循环计算中很有用,有时因为程序中断会导致数据丢失,如果保存了数据就能恢复上次的断点继续运算。
二进制格式
通过save()
函数保存数据,它的格式如下:
1 |
numpy.save(file, arr, allow_pickle=True, fix_imports=True) |
参数说明如下:
- file:要保存的文件,扩展名为
.npy
,如果文件路径末尾没有扩展名.npy
,该扩展名会被自动加上; - arr: 要保存的数组;
- allow_pickle: 可选,布尔值,允许使用 Python pickles 保存对象数组,Python 中的 pickle 用于在保存到磁盘文件或从磁盘文件读取之前,对对象进行序列化和反序列化;
- fix_imports: 可选,为了方便 Pyhton2 中读取 Python3 保存的数据。
代码演示:
1 2 3 4 5 6 |
>>>import numpy as np >>>a = np.arange(12).reshape(3, 4) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>>np.save('result.npy', a) |
通过load()
函数可以读取磁盘上的数组。
代码演示:
1 2 3 4 5 |
>>>import numpy as np >>>np.load('result.npy') array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) |
通过savez()
函数可以保存多个数组。将数组以关键字参数保存到一个压缩文件中,格式为.npz
。
代码演示:
1 2 3 4 |
>>>import numpy as np >>>a = np.array([1, 2, 3]) >>>b = np.array([3, 3 ,3]) >>>np.savez('output.npz', x=a, y=b) |
通过load()
加载时,可以指定关键字获得对应的数组。
1 2 3 4 5 6 |
>>>import numpy as np >>>arr = np.load('output.npz') >>>arr['x'] array([1, 2, 3]) >>>arr['y'] array([3, 3, 3]) |
文本文件
除了读写二进制格式数据,NumPy还能够读写文本文件。通过savetxt()
函数保存一个文本文件。它的格式为:
1 |
np.savetxt(FILENAME, a, fmt="%d", delimiter=",") |
fmt
可以指定保存格式,delimiter
指定各种分隔符、针对特定列的转换器函数、需要跳过的行数等。
代码演示:
1 2 3 4 5 |
>>>import numpy as np >>>a = np.random.randn(2, 2) array([[-1.77447055, 1.44193733], [-0.08680283, 0.48195077]]) >>>np.savetxt('out.txt', a, delimiter=',') |
在当前目录生成了一个'out.txt'
文本文件,以逗号分隔。
使用loadtxt()
函数可以读取文本文件。
代码演示:
1 2 3 4 |
>>>import numpy as np >>>np.loadtxt('out.txt', delimiter=',') array([[-1.77447055, 1.44193733], [-0.08680283, 0.48195077]]) |
总结
本文介绍了NumPy对表格型数据的读写操作,有两种方式:二进制格式和文本文件格式。在以后的pandas中也会介绍更多方便实用的文件读写操作。