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]
3 Réponses :
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>
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))