??在pandas使用的25個(gè)技巧中介紹了幾個(gè)常用的Pandas的使用技巧,不少技巧在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)方面很有用處屿愚。本文將會(huì)介紹Numpy在數(shù)據(jù)保存和讀取方面的內(nèi)容,這些在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)方向也大有用處,因?yàn)橥ǔN覀儠?huì)采用Numpy和Pandas處理數(shù)據(jù),尤其是Pytorch越驻,它和Numpy的結(jié)合更為緊密。
??我們先介紹Numpy的幾個(gè)函數(shù):
numpy.savez(file, *args, **kwds)
file:文件名/文件路徑
*args:要存儲(chǔ)的數(shù)組,可以寫多個(gè),如果沒有給數(shù)組指定Key,Numpy將默認(rèn)從'arr_0','arr_1'的方式命名
numpy.savez_compressed
使用辦法和numpy.savez一樣道偷,但是保存的文件會(huì)有壓縮缀旁,可以減小文件大小。
numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)
保存為txt文件勺鸦,fname為文件名稱并巍,X為numpy中的變量,fmt為保存格式祝旷,delimiter為分隔符履澳。
??我們的示例Python代碼如下:
# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2020/3/14 15:14
import numpy as np
# 創(chuàng)建1000*1000的矩陣嘶窄,元素為0-1之間的隨機(jī)數(shù)
matrix = np.random.rand(1000, 1000)
# 使用save_z和save_compressed保存maxtrix
np.savez("rand_matrix", matrix=matrix)
np.savez_compressed("rand_matrix_compressed", matrix=matrix)
# 保存為txt格式
np.savetxt("rand_matrix.txt", matrix, fmt="%.6f", delimiter=",")
需要注意的是怀跛,savetxt函數(shù)最多只能保存2維矩陣,3維以上就會(huì)報(bào)錯(cuò)柄冲,rand_matrix.txt中的部分內(nèi)容如下:
rand_matrix.txt
我們看一下保存的文件大形悄薄:
文件大小
可以看到,用savez_compressed保存的文件會(huì)比savez保存的文件小现横,這是因?yàn)樵摵瘮?shù)在文件打包時(shí)進(jìn)行了壓縮漓拾。
??接著是讀取npz文件中的內(nèi)容,我們以rand_matrix.npz為例戒祠,示例代碼如下:
# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2020/3/14 15:39
import numpy as np
# 讀取npz文件
mat = np.load("rand_matrix.npz")["matrix"]
# 輸出mat的相關(guān)信息
print(mat.shape)
print(mat[:5, :5])
輸出內(nèi)容如下:
(1000, 1000)
[[0.92338524 0.08321306 0.60686435 0.57764367 0.93594528]
[0.10552397 0.98878422 0.5237701 0.03220633 0.85022735]
[0.06755187 0.18767634 0.24769326 0.83413499 0.69020446]
[0.20900975 0.47176702 0.9302718 0.47056681 0.76258641]
[0.46927451 0.72896195 0.50372099 0.58216099 0.58198673]]
??最后骇两,我們將numpy中的矩陣保存為pickle文件,示例代碼如下:
# -*- coding: utf-8 -*-
# author: Jclian91
# place: Pudong Shanghai
# time: 2020/3/14 15:45
import numpy as np
import pickle
# 創(chuàng)建1000*1000的矩陣姜盈,元素為0-1之間的隨機(jī)數(shù)
matrix = np.random.rand(1000, 1000)
# 保存為pickle文件
with open("rand_matrix.pk", "wb") as f:
pickle.dump(matrix, f)
生成的文件大小如下:
生成的pickle
可以發(fā)現(xiàn)生成的pickle文件和numpy中的savez函數(shù)保存的文件大小一樣低千。
??本次分享到此結(jié)束,感謝大家閱讀~