關于numpy庫數(shù)組文件的輸入輸出

Numpy能夠讀寫磁盤上的文本數(shù)據(jù)或者二進制數(shù)據(jù)。這里只討論numpy的內(nèi)置二進制格式,因為更多的用戶會使用pandas或其他工具來加載文本或者表格數(shù)據(jù)。
np.savenp.load函數(shù)是讀取磁盤數(shù)組數(shù)據(jù)的兩個主要函數(shù)。默認情況下,數(shù)組是以未壓縮的原始二進制格式保存在擴展名為.npy的文件中的:

In [213]: arr = np.arange(10)

In [214]: np.save('some_array', arr)

可以看到,文件路徑末尾沒有擴展名.npy也沒有關系,最后保存的時候擴展名會被自動加上。保存就是為了以后讀取的(不是用來刪著玩的),然后就可以用np.load讀取磁盤上的數(shù)組了:

In [215]: np.load('some_array.npy')
Out[215]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

通過np.savez可以將多個數(shù)組保存到一個未壓縮文件中(這里的后綴為.npz),將數(shù)組以關鍵字參數(shù)的形式傳入即可:

In [216]: np.savez('array_archive.npz', a=arr, b=arr)

加載.npz文件時,你會得到一個類似字典的對象,該對象會對各個數(shù)組進行延遲加載:

In [217]: arch = np.load('array_archive.npz')

In [218]: arch['b']
Out[218]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

延遲加載是什么意思?
延遲加載(lazyload)又稱懶加載,類似隨用隨取的意思,當需要使用的時候再加載出來?,F(xiàn)在許多網(wǎng)頁、app也采用懶加載的形式,只有當scroll滾動條滑動到指定位置,才對某些占資源的文件如圖片進行加載。

如果要將數(shù)據(jù)壓縮,可以使用numpy.savez_compressed

In [219]: np.savez_compressed('arrays_compressed.npz', a=arr, b=arr)

更新完畢,哈哈~哈

文章代碼引用自:《利用Python進行數(shù)據(jù)分析·第2版》第4章 NumPy基礎:數(shù)組和矢量計算
作者:SeanCheney
感謝SeanCheney同意引用。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容