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
?amax
n'est pas optimisé pour la comparaison élémentaire dans ce cas - toute entrée devra être un tableau Numpy, de sorte que la liste serait convertie avant l'exécution de l'opération (en supposant que les deux formes soient identiques). Les documents pouramax
spécifiquement disent quemaximum
c'est plus rapide ici.amax
pourrait être transformé en ufunc, bien que le but principal des ufuncs soit de permettre aux opérations d'être diffusées entre les tableaux. Il semble peu nécessaire de créermax
un ufunc unaire. Je penseamax
qu'existait avant que les ufuncs ne soient vraiment une chose (cela venait du numérique, le parent de NumPy) donc est également conservé pour la postérité.maximum.reduce
préféré pour la performance:The Python function max() will find the maximum over a one-dimensional array, but it will do so using a slower sequence interface. The reduce method of the maximum ufunc is much faster. Also, the max() method will not give answers you might expect for arrays with greater than one dimension.
[...]max()
fonction intégrée Python , plutôt qu'ànumpy.max()
, mais il vaut vraiment la peine de souligner que Pythonmax()
est plus lent.Vous avez déjà expliqué pourquoi
np.maximum
est différent - il renvoie un tableau qui est le maximum élément par élément entre deux tableaux.Quant à
np.amax
etnp.max
: ils appellent tous les deux la même fonction -np.max
n'est qu'un alias pournp.amax
, et ils calculent le maximum de tous les éléments d'un tableau, ou le long d'un axe d'un tableau.la source
from numpy import max as np_max
juste pour éviter les conflits avec le génériquemax
tout le temps alors que j'aurais pu simplement utiliser desamax
peaux .Par souci d'exhaustivité, dans Numpy, il existe quatre fonctions liées au maximum . Ils appartiennent à deux catégories différentes:
np.amax/np.max
,np.nanmax
: pour les statistiques d'ordre d'un seul tableaunp.maximum
,np.fmax
: à titre de comparaison élément par élément des deux tableauxI. Pour les statistiques d'ordre d'un seul tableau
Propagateur NaNs
np.amax/np.max
et son homologue ignorant NaNnp.nanmax
.np.max
est juste un alias denp.amax
, donc ils sont considérés comme une seule fonction.np.max
propage les NaN tout ennp.nanmax
ignorant les NaN.II. Pour la comparaison élément par élément de deux tableaux
Propagateur NaNs
np.maximum
et son homologue ignorant NaNsnp.fmax
.Les deux fonctions nécessitent deux tableaux comme les deux premiers arguments positionnels avec lesquels comparer.
np.maximum
propage les NaN tout ennp.fmax
ignorant les NaN.Les fonctions élémentaires sont
np.ufunc
( Universal Function ) , ce qui signifie qu'elles ont des propriétés spéciales que la fonction Numpy normale n'a pas.Et enfin, les mêmes règles s'appliquent aux quatre fonctions minimales associées:
np.amin/np.min
,np.nanmin
;np.minimum
,np.fmin
.la source
np.maximum
compare non seulement élément par élément, mais compare également le tableau élément par élément à une valeur uniquela source