Numpy 筆記-#02 另存變數為 .npz
本文將介紹在進行一些運算最常使用到的功能之一:如何儲存變數、該怎麼讀取.npz檔。其實,使用Numpy就能簡單地達成這個任務(numpy.savez),而且還附有壓縮功能的方法(numpy.savez_compressed)。
練習範例同步放置於GitHub:Learn NumPy – GitHub
不壓縮存檔
numpy.savez(“路徑檔名”, 存檔後變數名稱1=欲儲存的變數1, …)
numpy.savez的使用方法很簡單,唯一需要注意的就只有變數設定的部分。
1 2 3 4 5 |
arr1 = np.arange(1, 101).reshape(10, 10) arr2 = np.arange(1, 10001).reshape(100, 100) arr3 = np.arange(1, 1000001).reshape(1000, 1000) np.savez('example_savez.npz', my_arr1=arr1, my_arr2=arr2, my_arr3=arr3) |
壓縮後存檔
numpy.savez_compressed(“路徑檔名”, 存檔後變數名稱1=欲儲存的變數1, …)
贊助廣告
這個方法可以在存成npz的過程中提供壓縮容量的效果,效果看起來是還蠻顯著的。
1 2 3 4 5 |
arr4 = np.arange(1, 101).reshape(10, 10) arr5 = np.arange(1, 10001).reshape(100, 100) arr6 = np.arange(1, 1000001).reshape(1000, 1000) np.savez_compressed('example_savez_compressed.npz', my_arr4=arr4, my_arr5=arr5, my_arr6=arr6) |
存檔後容量大小比較
以本文的範例來說,無壓縮的檔案大小大概是8.1MB,使用savez_compressed存檔的話大概是1.5MB。
讀取.npz
numpy.load(“路徑檔名”)
不論是使用savez或savez_compressed儲存成的.npz檔都可以使用這個方法存取裡面的變數。
P.s. 這個範例中的 .npz 檔是上面範例存起來的檔案。
1 2 3 4 5 6 |
npz_file = np.load('example_savez_compressed.npz') new_arr4, new_arr5 = npz_file['my_arr4'], npz_file['my_arr5'] print('Shape of new_arr4: {0}'.format(new_arr4.shape)) print(new_arr4) print('Shape of new_arr5: {0}'.format(new_arr5.shape)) |
Output
1 2 3 4 5 6 7 8 9 10 11 12 |
Shape of new_arr4: (10, 10) [[ 1 2 3 4 5 6 7 8 9 10] [ 11 12 13 14 15 16 17 18 19 20] [ 21 22 23 24 25 26 27 28 29 30] [ 31 32 33 34 35 36 37 38 39 40] [ 41 42 43 44 45 46 47 48 49 50] [ 51 52 53 54 55 56 57 58 59 60] [ 61 62 63 64 65 66 67 68 69 70] [ 71 72 73 74 75 76 77 78 79 80] [ 81 82 83 84 85 86 87 88 89 90] [ 91 92 93 94 95 96 97 98 99 100]] Shape of new_arr5: (100, 100) |
存檔執行時間
花費時間也是很重要的,以我使用過的經驗來說,真的是很有感的差別,Github的檔案中有放入執行時間的比較,有興趣的話可以連過去看看。:)
Reference