iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 18
2

嗨,今天來到第18天了!
今天來說說檔案的輸入與輸出吧,在Pandas中我們講過如何讀取檔案,在Numpy也能夠將資料輸出或輸入,今天來說明Binary格式和一般text檔案的輸入與輸出吧!

回顧其他天Numpy的文章:

Binary Format

先建立一筆資料:

x = np.arange(10)

save()

接著儲存:

np.save('my_array', x)

這樣就完成了!接著就可以回Jupyter目錄看看是否有多出一個my_array.npy的檔案。

load()

接下來我們將剛剛儲存的資料載入:

np.load('my_array.npy')

這邊的話請記得加上.npy,不然可能會找到其他的檔案去了喔!
Imgur

這就是save和load的概念了,有沒有非常的簡單呢?

savez()

我們可以儲存多個陣列在一個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 = aDatab = bData,並且存成my_archive.npz檔案。

若要使用zip檔案的資料只需要跟剛剛一樣使用load()

myArch = np.load('my_archive.npz')

這樣檔案內的資料就在myArch內了,現在要分別取出aData以及bData只需要:

myArch['b']

myArch['a']

Imgur

Text Files

我們在之前都有用Pandas來做到讀取檔案(像是read_csv)並且進行資料操作,現在來看看Numpy怎麼做吧!

在這裡我先建立一個txt檔案放入資料,在Jupyter內可以用!cat查看內容(跟在終端機的cat一樣):

!cat my_txt.txt

Imgur

load

在Numpy內會使用.loadtxt或特定的np.genfromtxt來讀取它:

myArr = np.loadtxt('my_txt.txt', delimiter=',')

我們使用np.loadtxt(),裡面的參數放入txt的檔案,delimiter=','則是設定分隔的符號!
可以看到下面這張圖,我們透過分隔將資料變成一個2維的陣列:
Imgur

savetxt

要將資料反向存成另外一個txt檔案只需要:

np.savetxt('txtfile.txt', myArr)

上面的程式碼,我們將剛剛load出來的myArr再存成一個txt檔案,並且名稱為txtfile.txt
好了之後可以回到Jupyter目錄,會看的到txtfile.txt這個檔案,將檔案打開:
Imgur

就可以看到它裡面先前我所建立的資料了!

總結:

我們可以運用Numpy中的檔案操作去輸出或輸入檔案,例如像是npy或是zip,當然我們也可以匯出或匯入成一般的文字檔,只需要一行的程式碼,是不是超級方便!

想看更多的可以到:
numpy.savez
numpy.savetxt
numpy.genfromtxt


上一篇
[Day17]Numpy的數學&統計方法!
下一篇
[Day19]Matplotlib讓資料視覺化!
系列文
使用Python進行資料分析30

尚未有邦友留言

立即登入留言