Skip to content

[Python] 在 Numpy 中將數值轉成 One-Hot 型態

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.]]

Leave a Reply