给定一个一维索引数组:
a = array([1, 0, 3])
我想将其独热编码为一个二维数组:
b = array([[0,1,0,0], [1,0,0,0], [0,0,0,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>>> barray([[ 0., 1., 0., 0.], [ 1., 0., 0., 0.], [ 0., 0., 0., 1.]])