Есть ли удобный способ извлечения индексов из массива строк? Я собираюсь выполнить простое кодирование в горячем режиме с помощью NumPy.У меня есть способ сделать кодирование само по себе, но сначала мне понадобится список индексов для кодирования.
Получение отсортированных уникальных элементов очень просто.
>>> vals = np.array(['a', 'b', 'c', 'b', 'a'])
>>> uniq = np.unique(vals)
array(['a', 'b', 'c'], dtype='<U1')
Тогда преобразование займетместо.Сначала я подумал об использовании list.index
с использованием основных списков Python, но это включает в себя преобразование списка из ndarray
в list
и обратно.И я думаю, что есть лучшее решение.
Я придумал:
idx = [np.where(uniq == v) for v in vals]
, но это дает массив nd-массивов.
И дляожидаемый результат естественно:
[0, 1, 2, 1, 0]