numpy 文件存取 npy、npz


轉處:http://blog.csdn.net/pipisorry/article/details/39088003

 

NumPy提供了多種文件操作函數方便我們存取數組內容。

文件存取的格式:二進制和文本。二進制格式的文件又分為NumPy專用的格式化二進制類型和無格式類型。

Numpy binary files (NPY, NPZ)

 

load(file[, mmap_mode, allow_pickle, ...]) Load arrays or pickled objects from .npy.npz or pickled files.
save(file, arr[, allow_pickle, fix_imports]) Save an array to a binary file in NumPy .npy format.
savez(file, *args, **kwds) Save several arrays into a single file in uncompressed .npz format.
savez_compressed(file, *args, **kwds) Save several arrays into a single file in compressed .npz format.

 

The format of these binary file types is documented inhttp://docs.scipy.org/doc/numpy/neps/npy-format.html

numpy.load和numpy.save函數(推薦在不需要查看保存數據的情況下使用)

以NumPy專用的二進制類型保存數據,這兩個函數會自動處理元素類型和shape等信息,使用它們讀寫數組就方便多了,但是numpy.save輸出的文件很難和其它語言編寫的程序讀入:

>>> np.save("a.npy", a) >>> c = np.load( "a.npy" ) >>> c array([[ 0, 1, 2, 3],  [ 4, 5, 6, 7],  [ 8, 9, 10, 11]]) 

Note:

1. 文件要保存為.npy文件類型,否則會出錯

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

numpy.savez函數

如果你想將多個數組保存到一個文件中的話,可以使用numpy.savez函數。savez函數的第一個參數是文件名,其后的參數都是需要保存的數組,也可以使用關鍵字參數為數組起一個名字,非關鍵字參數傳遞的數組會自動起名為arr_0, arr_1, ...。savez函數輸出的是一個壓縮文件(擴展名為npz),其中每個文件都是一個save函數保存的npy文件,文件名對應於數組名。load函數自動識別npz文件,並且返回一個類似於字典的對象,可以通過數組名作為關鍵字獲取數組的內容:

>>> a = np.array([[1,2,3],[4,5,6]]) >>> b = np.arange(0, 1.0, 0.1) >>> c = np.sin(b) >>> np.savez("result.npz", a, b, sin_array = c) >>> r = np.load("result.npz") >>> r["arr_0"] # 數組a array([[1, 2, 3],  [4, 5, 6]]) >>> r["arr_1"] # 數組b array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]) >>> r["sin_array"] # 數組c array([ 0. , 0.09983342, 0.19866933, 0.29552021, 0.38941834,  0.47942554, 0.56464247, 0.64421769, 0.71735609, 0.78332691]) 

如果你用解壓軟件打開result.npz文件的話,會發現其中有三個文件:arr_0.npy, arr_1.npy, sin_array.npy,其中分別保存着數組a, b, c的內容。


免責聲明!

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



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