numpy 學習:保存和加載


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”。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM