1. 程式人生 > 實用技巧 >Numpy 二進位制檔案儲存 (NPY, NPZ)

Numpy 二進位制檔案儲存 (NPY, NPZ)

Numpy binary files (NPY, NPZ)

numpy.load和numpy.save函式

以NumPy專用的二進位制型別儲存資料,這兩個函式會自動處理元素型別和shape等資訊,使用它們讀寫陣列就方便多了,但是numpy.save輸出的檔案很難和其它語言編寫的程式讀。

使用時,陣列會以未壓縮的原始二進位制格式儲存在副檔名為.npy的檔案中。

import numpy as np

# 將陣列以二進位制格式儲存到磁碟
arr=np.arange(5)
np.save('test',arr)
# 讀取陣列
print(np.load('test.npy'))

Note:

1. 檔案要儲存為.npy檔案型別,否則會出錯

2. 儲存為numpy專用二進位制格式後,就不能用notepad++開啟(亂碼)看了,這是相對tofile內建函式不好的一點

numpy.savez函式

如果你想將多個數組儲存到一個檔案中的話,可以使用numpy.savez函式。

savez函式的第一個引數是檔名,其後的引數都是需要儲存的陣列,也可以使用關鍵字引數為陣列起一個名字,非關鍵字引數傳遞的陣列會自動起名為arr_0, arr_1, ...。

savez函式輸出的是一個壓縮檔案(副檔名為npz),其中每個檔案都是一個save函式儲存的npy檔案,檔名對應於陣列名。

load函式自動識別npz檔案,並且返回一個類似於字典的物件,可以通過陣列名作為關鍵字獲取陣列的內容:

import numpy as np

# 將多個數組儲存到磁碟
a = np.arange(5)
b = np.arange(6)
c = np.arange(7)
np.savez('test', a, b, c_array=c)  # c_array是陣列c的命名
# 讀取陣列
data = np.load('test.npz') #類似於字典{‘arr_0’:a,’arr_1’:b,’c_array’:c}
print('arr_0 : ', data['arr_0'])
print('arr_1 : ', data['arr_1'])
print('c_array : ', data['
c_array']) -------------------------------------------------------------------------------- arr_0 : [0 1 2 3 4] arr_1 : [0 1 2 3 4 5] c_array : [0 1 2 3 4 5 6]