1. ホーム
  2. python

[解決済み] インデックスの配列を1-hotエンコードされたnumpy配列に変換します。

2022-02-09 03:10:12

質問

例えば、1次元のnumpy配列があるとします。

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

これを2次元のワンショット配列として符号化したい

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

これを素早く行う方法はありますか? をループさせるよりも手っ取り早く a の要素を設定するために b ということである。

解決方法は?

配列 a は、出力配列の 0 ではない要素の列を定義します。行も定義した上で、派手なインデックスを使用する必要があります。

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