np.max
est 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 axis
argument 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.maximum
est 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.maximum
c'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.maximum
imiter np.max
dans 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.
amax
pour 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 leaxis
paramètre) l'empêchent-elles d'être unufunc
?