Numpy: конвертировать метки в индексы - PullRequest
0 голосов
/ 02 мая 2018

Можно ли преобразовать строковый вектор в индексированный, используя numpy?

Предположим, у меня есть массив строк типа ['ABC', 'DEF', 'GHI', 'DEF', 'ABC'] и т. Д. Я хочу, чтобы он был заменен на массив целых чисел, например [0,1,2,1,0]. Возможно ли использовать NumPy? Я знаю, что у Pandas есть класс Series, который может это сделать, благодаря этому ответу . Есть ли что-то похожее и для numpy?

Редактировать: np.unique() возвращает уникальное значение для всех элементов. Я пытаюсь преобразовать метки в наборе данных Iris в индексы, такие как 0 для Iris-setosa, 1 для Iris-versicolor и 2 для Iris-virginica соответственно. Есть ли способ сделать это, используя numpy?

1 Ответ

0 голосов
/ 02 мая 2018

Используйте numpy.unique с параметром return_inverse=True, но есть разница с обработкой NaN s - проверка факторизация значений :

L = ['ABC', 'DEF', 'GHI', 'DEF', 'ABC']

print (np.unique(L, return_inverse=True)[1])
[0 1 2 1 0]

панд factorize хорошо работает со списком или массивом тоже:

print (pd.factorize(L)[0])
[0 1 2 1 0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...