классно! Большое спасибо, это сэкономит мне много времени!

я огромный тренировочный набор данных с 4 классами. Эти классы помечены не последовательно. Чтобы иметь возможность применять последовательную нейронную сеть, классы должны быть помечены так, чтобы уникальные значения в классах были последовательными. Кроме того, в конце сценария я должен перенастроить их к их старым значениям.

Я знаю, как пометить их петлями:

def relabel(old_classes, new_classes):
    indexes=[np.where(old_classes ==np.unique(old_classes)[i]) for i in range(len(new_classes))]
    for i in range(len(new_classes )):
        old_classes [indexes[i]]=new_classes[i]
    return old_classes

>>> old_classes = np.array([0,1,2,6,6,2,6,1,1,0])
>>> new_classes = np.arange(len(np.unique(old_classes)))
>>> relabel(old_classes,new_classes)
array([0, 1, 2, 3, 3, 2, 3, 1, 1, 0])

Но это не очень хорошее кодирование, и оно занимает довольно много времени.

Любая идея, как векторизовать это перемаркировка?

Чтобы быть ясным, я также хочу иметь возможность перебросить их обратно к их старым ценностям:

>>> relabeled_classes=np.array([0, 1, 2, 3, 3, 2, 3, 1, 1, 0])
>>> old_classes = np.array([0,1,2,6])
>>> relabel(relabeled_classes,old_classes )
array([0,1,2,6,6,2,6,1,1,0])

Ответы на вопрос(1)

Ваш ответ на вопрос