Тонкая ошибка изменения значения метки массива - PullRequest
0 голосов
/ 14 марта 2019

Задача

Я пытаюсь сопоставить исходную метку 769, 770, 771 и 772 с 0, 1, 2 и 3. Однако, когда я пытаюсь сделать это со словарем, y_test в следующем не изменяется.

Обратите внимание, что dataDict - это предварительно обработанный словарь, в котором ключи "y_test" и "y_train_valid" соответствуют массиву 1D типа int32.

mappingDict = {769: 0, 770: 1, 771: 2, 772: 3}
y_train = dataDict["y_train_valid"].copy()
y_test = dataDict["y_test"].copy()
for label, newLabel in mappingDict.items():
    y_train[y_train == label] = newLabel
    y_test[y_test == label] == newLabel

MWE

Чтобы воспроизвести то, что произошло, вы можете попробовать следующее и в итоге получите enter image description here

y_train = np.array([771, 772, 769, 769, 769, 769, 771, 770, 772, 772], dtype="int32")
y_test = np.array([770, 769, 771, 772, 772, 771, 771, 772, 772, 769], dtype="int32")
mappingDict = {769: 0, 770: 1, 771: 2, 772: 3}

for label, newLabel in mappingDict.items():
    y_train[y_train == label] = newLabel
    y_test[y_test == label] == newLabel

1 Ответ

0 голосов
/ 14 марта 2019

Это глупая ошибка, но заняло у меня 30 минут.

Я как-то добавил дополнительные = в y_test[y_test == label] = newLabel, и в результате y_test[y_test == label] == newLabel

...