generate sequence by indices / one-hot encoding

后端 未结 4 852
时光说笑
时光说笑 2020-12-21 13:36

I have a sequence s = [4,3,1,0,5] and num_classes = 6 and I want to generate a Numpy matrix m of shape (len(s), num_classes)

4条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-21 14:03

    You can use broadcasting -

    (np.array(s)[:,None]==np.arange(num_classes))+0
    

    Sample run -

    In [439]: s
    Out[439]: [4, 3, 1, 0, 5]
    
    In [440]: num_classes = 9
    
    In [441]: (np.array(s)[:,None]==np.arange(num_classes))+0
    Out[441]: 
    array([[0, 0, 0, 0, 1, 0, 0, 0, 0],
           [0, 0, 0, 1, 0, 0, 0, 0, 0],
           [0, 1, 0, 0, 0, 0, 0, 0, 0],
           [1, 0, 0, 0, 0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0, 1, 0, 0, 0]])
    

提交回复
热议问题