numpy使用save(), savez()和load()函數來保存和加載numpy的二進制文件。
一,保存文件
save()和savez()的區別是前者是非壓縮的,而后者是壓縮存儲。
1,save()函數
def save(file, arr, allow_pickle=True, fix_imports=True)
save()
函數:以.npy
格式將數組保存到二進制文件中。.npy
格式:以二進制的方式存儲文件,在二進制文件第一行以文本形式保存了數據的元信息(ndim,dtype,shape等),可以用二進制工具查看內容。
舉個例子,把文件保存到二進制文件中。
outfile = r'.\test.npy' np.random.seed(20200619) x = np.random.uniform(low=0, high=1,size = [3, 5]) np.save(outfile, x) y = np.load(outfile) print(y)
2,壓縮存儲
def savez(file, *args, **kwds):
savez()
函數:以未壓縮的.npz
格式將多個數組保存到單個文件中。.npz
格式:以壓縮打包的方式存儲文件,可以用壓縮軟件解壓。savez()
函數:第一個參數是文件名,其后的參數都是需要保存的數組,也可以使用關鍵字參數為數組起一個名字,非關鍵字參數傳遞的數組會自動起名為arr_0, arr_1, …
。savez()
函數:輸出的是一個壓縮文件(擴展名為.npz
),其中每個文件都是一個save()
保存的.npy
文件,文件名對應於數組名。load()
自動識別.npz
文件,並且返回一個類似於字典的對象,可以通過數組名作為關鍵字獲取數組的內容。
舉個例子:將多個數組保存到一個文件
outfile = r'.\test.npz' x = np.linspace(0, np.pi, 5) y = np.sin(x) z = np.cos(x) np.savez(outfile, x, y, z_d=z) data = np.load(outfile) np.set_printoptions(suppress=True) print(data.files) # ['z_d', 'arr_0', 'arr_1'] print(data['arr_0']) # [0. 0.78539816 1.57079633 2.35619449 3.14159265] print(data['arr_1']) # [0. 0.70710678 1. 0.70710678 0. ] print(data['z_d']) # [ 1. 0.70710678 0. -0.70710678 -1. ]
二,加載文件
def load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII'):
load()
函數:從.npy
、.npz
或 pickled文件加載數組或pickled對象。mmap_mode: {None, ‘r+’, ‘r’, ‘w+’, ‘c’};
:讀取文件的方式。allow_pickle=False
:允許加載存儲在.npy
文件中的pickled對象數組。fix_imports=True
:若為True,pickle將嘗試將舊的python2名稱映射到python3中使用的新名稱。encoding='ASCII'
:制定編碼格式,默認為“ASCII”。