-1
votes

Tableau de valeurs d'index pour des éléments uniques dans la liste

J'ai la liste suivante: xxx

avec np.unique valeurs de [1, 2] < p> Comment générer la liste suivante: xxx

IE Un index de fonctionnement de 1 pour chacun des éléments uniques de la liste x .


0 commentaires

3 Réponses :


2
votes

Vous pouvez utiliser pandas.cumcount () après regroupement par la valeur elle-même, cela fait exactement que:

Numéro Chaque élément de chaque groupe de 0 à la longueur de ce groupe - 1.

Essayez ceci: xxx

sortie: xxx


2 commentaires

Merci. Y a-t-il un moyen de le faire avec des pandas?


@ALEX_LEWIS J'ai essayé avec une fonction NATIVE NUMPY, mais je n'ai pas pu obtenir une solution agréable. L'inverse que je pense d'utiliser list.index dans une boucle, qui sera 100 fois plus lent :( peut-être que quelqu'un d'autre viendra avec quelque chose de numpopié uniquement.



2
votes

Il suffit d'utiliser retour_counts = true de np.unique avec listComp et np.hstack . C'est encore une solution de pandas plus rapide xxx


1 commentaires

Cela ne fonctionnera que si les valeurs sont consécutives. pour x = np.array ([1, 1, 2, 2, 2, 1]) Vous obtiendrez [1 2 3 1 2 3] pendant que vous devriez Obtenir [1 2 1 2 3 3]



1
votes

Je ne suis pas sûr, s'il s'agit d'une solution plus rapide ou plus lente, mais si vous avez besoin d'un résultat de liste sans pandas, vous pouvez essayer ce xxx blockQuote>

[1, 2, 1, 2, 3]

(ou faites votre propre compteur avec dict au lieu de compteur () )


0 commentaires