Last Updated on 2021-05-27 by Clay
Numpy 是在 Python 處理資料時不可或缺的重要模組,常用於進行各種資料分析的工作。
今天我有個需求為將 Numpy 矩陣內的數值轉換成 One-Hot 編碼的型態,以下就來簡單紀錄該怎麼使用 eye() 這個 Numpy 自帶的 function 來進行轉換。
如果對於 Numpy 的其他使用方法有興趣,也許可以參考以下這個網站: https://docs.scipy.org/doc/numpy/user/quickstart.html
One-Hot
在開始前,我簡單講解一下 One-Hot 的型態,這裡不討論為何要轉換,只單純敘述 One-Hot 是怎麼樣的編碼。
假設我們有以下這一組數值:
[1, 2, 3]
那我們將其轉換成 One-Hot 編碼後:
[[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]]
Index 從 0 開始計算的話, One-Hot Encoding 就是上述的型態。
Numpy 數值轉換成 One-Hot Encoding
其實轉換方法意外簡單:調用 eye() 這個 function 即可。
假設我們有以下一組 Numpy 的數值:
import numpy as np list = np.array([1, 2, 3]) print(list)
Output:
[1 2 3]
由於 Index 是從 0 開始計算,所以我們可以想像在 Numpy 的 One-Hot 矩陣中每一矩陣的長度為 4。
那麼我們只要使用以下指令就可以輕鬆轉換:
print(np.eye(4)[list])
Output:
[[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]