Категориальные данные: преобразовать в двоичную кодировку путем добавления нового измерения

#python #pandas #numpy #categorical-data

#python #pandas #numpy #категориальные данные

Вопрос:

Каждый объект в моем наборе данных имеет три категории и в настоящее время кодируется целыми числами 0, 1 и 2. Вместо однозначных данных я хочу закодировать его в двоичный тип кодирования, где 0 заменяется на [0,0], 1 заменяется на [0,1] и 2 заменяется на [1,1]. Как бы я это сделал без использования цикла for?

Допустим, мои данные выглядят следующим образом:

   [[1, 2, 0],
   [2, 0, 1]]
  

Результат должен добавить измерение —

   [[[0., 1.],
    [1., 1.],
    [0., 0.]],

   [[1., 1.],
    [0., 0.],
    [0., 1.]]]
  

Ответ №1:

Проверьте с помощью

 (a.ravel()[:,None]>np.arange(a.max())).astype(int)[:,::-1].reshape((2,-1,2))
Out[353]: 
array([[[0, 1],
        [1, 1],
        [0, 0]],
       [[1, 1],
        [0, 0],
        [0, 0]]])
  

 a=np.array( [[1, 2, 0],
   [2, 0, 1]])