То, что я пытаюсь сделать
У меня есть набор данных, где в каждом ряду команда из 11 игроков, каждый из которых представлен номером своей футболки. Например, команда А может состоять из [1, 66, 22, 4, 26, 3, 18, 8, 9, 11, 10]
. Возможные номера рубашек варьируются от 0 до 99, и я хотел бы затем представить команды с вектором размером 100, где индексы, соответствующие номерам рубашек, отмечены 1с, а остальные 0. Команда А, например, будет тогда:
[0., 1., 0., 1., 1., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0., 0., 0.,
0., 1., 0., 0., 0., 1., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]
Что я пробовал
Я реализовал это преобразование с помощью простой функции:
def encode_lineup(kit_numbers, squad_size=100):
encoded_lineup = np.zeros(squad_size)
encoded_lineup[kit_numbers] = 1
return encoded_lineup
Теперь, пытаясь расширить эту реализацию на несколько команд (массив команд), я не смог придумать ничего лучше, чем al oop, например:
all_encoded_lineups = np.zeros(number_of_teams, squad_size)
for i in range(number_of_teams):
all_encoded_lineups[i] = encode_lineup(teams[i], squad_size)
Какая мне нужна помощь с
Я хотел бы сделать это более эффективно, если это возможно - знаете ли вы какие-либо предложения по векторизации этой реализации или какие-либо другие идеи?
Заранее спасибо!