Новогодние скидки на курсы 35 %
Собери курс по IT со скидкой 40%
Задача 2
One-hot encoding
Напишите программу для преобразования одномерного массива в двумерную матрицу, которая представляет собой one-hot кодировку исходного массива. Например, для массива [5, 1, 0, 3, 5] one-hot кодировка выглядит так:
[[0. 0. 0. 0. 0. 1.]
[0. 1. 0. 0. 0. 0.]
[1. 0. 0. 0. 0. 0.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 0. 1.]]

Решение 1
import numpy as np

arr = np.array([5, 1, 0, 1, 2])
one_hot_encoded = np.zeros((arr.size, arr.max() + 1))
one_hot_encoded[np.arange(arr.size), arr] = 1

print(one_hot_encoded)
Решение 2
import numpy as np  

arr = np.array([5, 1, 0, 1, 2]) 
n_values = np.max(arr) + 1 
one_hot_encoded = np.eye(n_values)[arr]  

print(one_hot_encoded)
Результат 💡
[[0. 0. 0. 0. 0. 1.]
[0. 1. 0. 0. 0. 0.]
[1. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0.]]