a = [1,5,6,2,3] result = most_find(a, 3) reslut [2,1,4] # the index of 6, 5, 3 in a
Je sais implémenter cette fonction de manière complexe ....
Y a-t-il des fonction intégrée en Python ou numpy pour y faire face?
3 Réponses :
Il existe un intégré lié par Sushanth mais vous pouvez également l'implémenter comme ceci: sorted (range (len (a)), key = lambda i: -a [i]) [: 3] < / code>
Trier l'index par valeur,
def most_find(sequence, n):
lst = sorted(range(len(sequence)), key=lambda x:sequence[x], reverse=True)
return lst[:n]
a = [1, 5, 6, 2, 3]
result = most_find(a, 3)
print(result)
Existe-t-il une fonction intégrée en Python ou numpy pour y faire face?
En fait, il y en a! Il s'appelle
numpy.argsort ()a>:[2 1 4]Résultat:
import numpy as np a = [1, 5, 6, 2, 3] print(np.array(a).argsort()[-3:][::-1]) # If you want to list the indexes of the 4 greatest numbers, change the -3 to -4, etc.
Est-ce que cela répond à votre question? Comment obtenir des indices de N valeurs maximales dans un tableau NumPy?
Ouais, merci! C'est une façon simple de travailler
S'il s'agit déjà d'un tableau
numpy, alors leargsortouargpartitionlié devrait être le plus rapide. Mais s'il s'agit d'une liste, une méthode de tri par liste est probablement meilleure.@hpaulj, d'accord, je comprends! Merci. Je pensais à cette question, la manière directe peut-être mieux