np.maxest juste un alias pour np.amax. Cette fonction ne fonctionne que sur un seul tableau d'entrée et trouve la valeur de l'élément maximum dans tout ce tableau (renvoyant un scalaire). Sinon, il prend un axisargument et trouvera la valeur maximale le long d'un axe du tableau d'entrée (retournant un nouveau tableau).
>>> a = np.array([[0, 1, 6],
[2, 4, 1]])
>>> np.max(a)
6
>>> np.max(a, axis=0) # max of each column
array([2, 4, 6])
Le comportement par défaut de np.maximumest de prendre deux tableaux et de calculer leur maximum élément par élément. Ici, «compatible» signifie qu'un tableau peut être diffusé vers l'autre. Par exemple:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
Mais np.maximumc'est aussi une fonction universelle, ce qui signifie qu'elle possède d'autres fonctionnalités et méthodes utiles lorsque vous travaillez avec des tableaux multidimensionnels. Par exemple, vous pouvez calculer le maximum cumulé sur un tableau (ou un axe particulier du tableau):
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
Ce n'est pas possible avec np.max.
Vous pouvez faire np.maximumimiter np.maxdans une certaine mesure lors de l'utilisation np.maximum.reduce:
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
Les tests de base suggèrent que les deux approches sont comparables en termes de performances; et ils devraient l'être, comme les np.max()appels en faitnp.maximum.reduce pour faire le calcul.
amaxpour le même but (racine) quemaximum, c'est-à-dire avecnumpy.amax([a1, a2], axis=0)--- mais n'est-ce pas aussi optimisé pour ce comportement quenumpy.maximum? De même, les subtilités ajoutées denumpy.amax(par exemple leaxisparamètre) l'empêchent-elles d'être unufunc?