嗨,今天來到第18天了!
今天來說說檔案的輸入與輸出吧,在Pandas中我們講過如何讀取檔案,在Numpy也能夠將資料輸出或輸入,今天來說明Binary
格式和一般text
檔案的輸入與輸出吧!
回顧其他天Numpy的文章:
先建立一筆資料:
x = np.arange(10)
接著儲存:
np.save('my_array', x)
這樣就完成了!接著就可以回Jupyter目錄看看是否有多出一個my_array.npy
的檔案。
接下來我們將剛剛儲存的資料載入:
np.load('my_array.npy')
這邊的話請記得加上.npy
,不然可能會找到其他的檔案去了喔!
這就是save和load的概念了,有沒有非常的簡單呢?
我們可以儲存多個陣列在一個zip
的檔案中,使用np.savez
就可以了!
首先,我們先建立兩個陣列:
aData = [1,2,3,4,5,6]
bData = [7,8,9,10,11,12]
使用np.savez()
np.savez('my_archive.npz', a=aData, b=bData)
在參數裡面,宣告a = aData
和b = bData
,並且存成my_archive.npz
檔案。
若要使用zip檔案的資料只需要跟剛剛一樣使用load()
:
myArch = np.load('my_archive.npz')
這樣檔案內的資料就在myArch
內了,現在要分別取出aData
以及bData
只需要:
myArch['b']
和
myArch['a']
我們在之前都有用Pandas來做到讀取檔案(像是read_csv
)並且進行資料操作,現在來看看Numpy怎麼做吧!
在這裡我先建立一個txt檔案放入資料,在Jupyter內可以用!cat
查看內容(跟在終端機的cat
一樣):
!cat my_txt.txt
在Numpy內會使用.loadtxt
或特定的np.genfromtxt
來讀取它:
myArr = np.loadtxt('my_txt.txt', delimiter=',')
我們使用np.loadtxt()
,裡面的參數放入txt的檔案,delimiter=','
則是設定分隔的符號!
可以看到下面這張圖,我們透過分隔將資料變成一個2維的陣列:
要將資料反向存成另外一個txt
檔案只需要:
np.savetxt('txtfile.txt', myArr)
上面的程式碼,我們將剛剛load
出來的myArr
再存成一個txt
檔案,並且名稱為txtfile.txt
。
好了之後可以回到Jupyter目錄,會看的到txtfile.txt
這個檔案,將檔案打開:
就可以看到它裡面先前我所建立的資料了!
我們可以運用Numpy中的檔案操作去輸出或輸入檔案,例如像是npy或是zip,當然我們也可以匯出或匯入成一般的文字檔,只需要一行的程式碼,是不是超級方便!
想看更多的可以到:
numpy.savez
numpy.savetxt
numpy.genfromtxt