numpy convertir des tableaux de chaînes catégoriques en un tableau d'entiers
Je suis en train de convertir un tableau de chaînes de variables catégorielles à un tableau d'entiers de variables catégorielles.
Ex.
import numpy as np
a = np.array( ['a', 'b', 'c', 'a', 'b', 'c'])
print a.dtype
>>> |S1
b = np.unique(a)
print b
>>> ['a' 'b' 'c']
c = a.desired_function(b)
print c, c.dtype
>>> [1,2,3,1,2,3] int32
Je réalise que j'ai peut être fait avec une boucle, mais j'imagine que c'est un moyen plus facile. Merci.
source d'informationauteur wroscoe
Vous devez vous connecter pour publier un commentaire.
Bien, c'est un hack... mais est-il utile?
np.unique a une option renvoie
return_inverse donne l'entier de codage, que j'utilise très souvent
il peut être utilisé pour recréer le tableau original de uniques
... des années plus tard....
Complètes (parce que ce n'est pas mentionné dans les réponses) et des raisons personnelles (je toujours ont
pandas
importés dans mes modules, mais pas nécessairementsklearn
), c'est aussi assez simple, avecpandas.get_dummies()
Une façon est d'utiliser l'
catégorique
fonction de scikits.statsmodels. Par exemple:La valeur de retour de
categorical
(b
) est en fait une matrice de conception, d'où l'appel àargmax
ci-dessus pour obtenir le format souhaité.Une autre approche consiste à utiliser des Pandas
factorize
pour les éléments de la carte pour un nombre:...certains plus les années passent...
Pensé que je pourrais fournir un pur python solution pour l'exhaustivité: