print
просто записывает ваш вывод в stdout, он не меняет базовые данные.Выход одноразовый.Вы используете «печать» несколько раз в своем вопросе, когда я думаю, что вы действительно хотите изменить данные.Один из способов сделать это - использовать numpy.select
.
import numpy as np
labels = np.array([0, 1, 1, 2, 0, 1, 2, 0]) # Fake data
# Now use select to replace the numerical values with categories
replacements = ['narrow', 'wide', 'normal']
new_labels = np.select([labels == 0, labels == 1, labels == 2],
replacements)
Я не совсем уверен, что оптимизация numpy
может дать здесь, потому что я не указал dtypeдля выходного массива (как я мог бы с аккумулятором), и мы переходим от числового типа к строковому типу.Вполне возможно, что это просто выпадает как цикл Python, и этот синтаксис не дает никакой выгоды по сравнению с обработкой его как обычного списка и отображением целых чисел в категории из словаря путем итерации.Синтаксис определенно не подходит для большего количества категорий, чем вы используете в своем вопросе.