Эффективный способ получения общего количества баллов вместе с numpy.unique()Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Эффективный способ получения общего количества баллов вместе с numpy.unique()

Сообщение Anonymous »


Моя задача заключается в следующем:

Каждая строка меток представляет идентификаторы учащихся, получивших награды на определенном конкурсе. Каждое соревнование имеет разные весовые коэффициенты, которые задаются весами.

баллыучащихся рассчитываются как взвешенное количество полученных ими наград. На данный момент у меня есть следующее:

импортировать numpy как np метки = np.array([ [0,1,5], [0,1,3], [2,4,5]]) веса = np.array([ [1], [2], [4]]) c_labels = np.concatenate(метки) c_weights = np.concatenate(np.broadcast_to(weights,(3,3))) uni, inv = np.unique(c_labels,return_inverse=True) оценки = np.zeros(len(uni)) потому что я в универе: оценки = np.sum(c_weights[inv==i]) распечатать (баллы) Выше я упростил свою задачу как проблему оценки учащихся, чтобы объяснить ее ясно. Это часть моей более крупной задачи, и для продолжения мне нужно сгенерировать уникальный массив labels и соответствующий массив scores.

Реальный размер данных огромен, и мне нужно повторять это много раз, поэтому я не могу использовать циклы for, поскольку это занимает слишком много времени. Мне хотелось бы перейти на более эффективный способ (т. е. каким-то образом заменить последний цикл for на операцию массива), но я не знаю, как это сделать. Любое предложение будет оценено.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»