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