5
votes

Comment trouver l'index de la valeur maximale non infinie dans un tableau numpy?

Je voudrais trouver l'index de la plus grande valeur dans un tableau numpy 1D qui n'est pas l'infini. J'ai essayé argmax, mais quand il y a une valeur infinie dans mon tableau, il renvoie simplement cet index. Le code que j'ai trouvé semble assez piraté et dangereux. Existe-t-il une meilleure solution?

import numpy as np
Y=np.array([2.3,3.5,np.inf,4.4,np.inf,2.5])

idx=np.where(Y==np.max(Y[np.isfinite(Y)]))[0][0]


0 commentaires

3 Réponses :


8
votes

Une façon serait de convertir Inf en Inf négatif et d'utiliser argmax () -

np.where(np.isinf(Y),-np.Inf,Y).argmax()

p>


0 commentaires

3
votes

Voici comment je procéderais. Convertissez tous les inf en plus petit nombre dans le tableau puis trouvez le maximum en utilisant argmax:

Y = np.array([2.3, 3.5, np.inf, 4.4, np.inf, 2.5])
Y[Y == np.inf] = np.min(Y)
print(np.argmax(Y))


0 commentaires