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

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

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

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

可以看到,文件路徑末尾沒有擴(kuò)展名.npy也沒有關(guān)系,最后保存的時(shí)候擴(kuò)展名會(huì)被自動(dòng)加上。保存就是為了以后讀取的(不是用來刪著玩的),然后就可以用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可以將多個(gè)數(shù)組保存到一個(gè)未壓縮文件中(這里的后綴為.npz),將數(shù)組以關(guān)鍵字參數(shù)的形式傳入即可:

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

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

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)又稱懶加載,類似隨用隨取的意思,當(dāng)需要使用的時(shí)候再加載出來?,F(xiàn)在許多網(wǎng)頁(yè)、app也采用懶加載的形式,只有當(dāng)scroll滾動(dòng)條滑動(dòng)到指定位置,才對(duì)某些占資源的文件如圖片進(jìn)行加載。

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

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

更新完畢,哈哈~哈

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

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

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