NumPyでインデックスの配列をワンホットエンコードされた配列に変換する 質問する

NumPyでインデックスの配列をワンホットエンコードされた配列に変換する 質問する

1D 配列のインデックスが与えられます。

a = array([1, 0, 3])

これを 2D 配列としてワンホット エンコードします。

b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])

ベストアンサー1

b十分な列数、つまり のゼロ配列を作成しますa.max() + 1
次に、各行の番目の列を にi設定します。a[i]1

>>> a = np.array([1, 0, 3])
>>> b = np.zeros((a.size, a.max() + 1))
>>> b[np.arange(a.size), a] = 1

>>> b
array([[ 0.,  1.,  0.,  0.],
       [ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.]])

おすすめ記事