除了提供多维数组对象 ndarrary 、高效的数组操作函数和方法外, NumPy 还支持磁盘文本或二进制数据的读写操作。
NumPy 提供了两个主要的函数,分别用于将 ndarray 写入磁盘和从磁盘中读入保存的数组数据文件。
在默认情况下,数组会以未压缩的二进制格式保存在文件扩展名为.npy
的文件中。
import numpy as np
arr1 = np.random.randn(10)#创建数组
arr2 = np.random.randn(10)
arr_res = arr1 + arr2 #操作数组
np.save('result',arr_res)#保存结果数组
np.save
函数的第一个参数是一个文件名(可以包含指定路径),第二个参数是要保存的数组。如果用户没有指定文件扩展名, NumPy 会在实际保存时将.npy
加上。
这样数据就被保存到了计算机磁盘上,当要导入该数据时,只需要调用 np.load()
函数并传入文件路径。
print(np.load('result.npy'))
[-1.33242934 0.73556038 -3.04189124 0.56008649 -1.78524622 -0.50861518
-0.05455277 1.5992195 1.00237467 -0.35313544]
Process finished with exit code 0
在实际进行数组操作时往往会产生多个需要保存的数据结果,np.savez()
函数可以将多个 ndarray 保存到二进制文件中。与 np.save()
一样,该函数需要的第一个参数,也是保存的文似名,但以.npz
作为文件扩展名,后面的参数可以是任意多个用户指定的关键字参数。
np.savez('array_save.npz',input1=arr1,input2=arr2,result=arr_res)
如果直接将其导入,返回的结果是一个不可查看的 NpzFile 对象。
我们需要将其赋值给一个变量,然后通过保存时设定的关键字参数进行索引来查看单个的数组数据。
arr_save = np.load('array_save.npz')
print(arr_save['input1'])
print(arr_save['input2'])
print(arr_save['result'])
[ 0.11244526 -0.42884189 0.48171799 0.32363178 -0.08604794 1.23202834
1.54497946 -1.00225433 -0.32122562 0.43749743]
[-0.45032818 -1.77074314 0.19227229 -0.22110498 1.15122975 1.74181983
0.24011982 0.30892127 0.62247801 -0.56791777]
[-0.33788292 -2.19958503 0.67399027 0.1025268 1.06518182 2.97384818
1.78509928 -0.69333306 0.30125239 -0.13042034]
Process finished with exit code 0
上述保存的文件都是未压缩的,如果需要将数据压缩,不妨使用 np.savez_compressed()
函数,该函数的使用方与np.savez()
一致。