Je voudrais obtenir les 10% les plus bas de 10% dans la liste.
List = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
6 Réponses :
résultat = Liste [: int (Len (List) * 0.1)] Code> P>
Si tous les éléments sont uniques, vous pouvez simplement trier et couper les données Cependant, dans la plupart des cas, cela est faux, vous pouvez utiliser la version numpy p> import numpy as np
l = np.array([1]*20)
threshold = np.percentile(l, 10)
print(l[l < np.percentile(l, 10)]) # Gives you empty list
print(l[l <= np.percentile(l, 10)]) # Gives you full list
Essayez ceci - où lis code> est votre liste. p> p>
# list of values lstValues = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] # get maximum value out of list values max = max(lstValues) # calculate 10 percent out of max value max /= 10 # print all the elements which are under the 10% mark print([i for i in lstValues if i <= max])
Vous devriez faire attention lorsque vous surchargez les méthodes intégrées
Qu'entendez-vous avec la surcharge des méthodes?
Après cela, vous ne pouvez pas utiliser max (1, 2) code> plus. Mon libellé pourrait être faux
Oh je ne savais pas ça. Merci beaucoup!
Mon plaisir ! :)
Cette solution ne fonctionnera que si tous les éléments de la liste ne sont pas aléatoires ou ne suivent pas un motif compatible. LSTValues = [1, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9] ne fonctionnera pas du tout pour un exemple.
@MatthieurAnnaudDefitte Cela dépend de la nécessité, la question n'était pas très claire, peut-être que OP souhaitait "prendre les éléments
@Bluesheepoken est vrai, la question a besoin d'un peu de clarification
@Matthieuraraynauddefitte mon mauvais, je n'ai pas pensé à différents modèles possibles.
Si vous souhaitez utiliser NUMPY, il existe une fonction de centile intégrée:
Ici vous allez
= ^ .. ^ = sortie: p>
Oh, ce que j'attends, c'est [1,2]. L'élément réel, pas l'index.
Trier et obtenir Arr [: Len (ARR) // 10]?
Les éléments sont-ils uniques? Et si l'entrée est
[1] * 10 code>