np.max
ist nur ein Alias für np.amax
. Diese Funktion funktioniert nur für ein einzelnes Eingabearray und ermittelt den Wert des maximalen Elements in diesem gesamten Array (Rückgabe eines Skalars). Alternativ wird ein axis
Argument verwendet und der Maximalwert entlang einer Achse des Eingabearrays ermittelt (wobei ein neues Array zurückgegeben wird).
>>> 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])
Das Standardverhalten von np.maximum
besteht darin, zwei Arrays zu verwenden und ihr elementweises Maximum zu berechnen. Hier bedeutet "kompatibel", dass ein Array an das andere gesendet werden kann. Beispielsweise:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
Es np.maximum
ist aber auch eine universelle Funktion, was bedeutet, dass es andere Funktionen und Methoden hat, die bei der Arbeit mit mehrdimensionalen Arrays nützlich sind. Beispielsweise können Sie das kumulative Maximum über ein Array (oder eine bestimmte Achse des Arrays) berechnen:
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
Dies ist mit nicht möglich np.max
.
Sie können bis zu einem gewissen Grad np.maximum
nachahmen np.max
, wenn Sie Folgendes verwenden np.maximum.reduce
:
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
Grundlegende Tests legen nahe, dass die beiden Ansätze in ihrer Leistung vergleichbar sind. und sie sollten es sein, wie np.max()
tatsächlich Aufrufenp.maximum.reduce
zur Berechnung.
amax
für den gleichen (Wurzel-) Zweck verwendenmaximum
, dh mitnumpy.amax([a1, a2], axis=0)
---, aber ist dies nicht so optimiert für dieses Verhalten wienumpy.maximum
? In ähnlicher Weise schließen die hinzugefügten Feinheiten vonnumpy.amax
(z. B. demaxis
Parameter) aus, dass es ein istufunc
?amax
ist hier nicht für den elementweisen Vergleich optimiert - jede Eingabe muss ein Numpy-Array sein, damit die Liste vor dem Ausführen der Operation konvertiert wird (vorausgesetzt, die beiden Formen waren gleich). Die Dokumenteamax
sagen ausdrücklich, dass diesmaximum
hier schneller ist.amax
könnte sie zu einem Ufunc machen, obwohl der Hauptzweck von Ufuncs darin besteht, Operationen zwischen Arrays zu übertragen. Es scheint wenig notwendig zu sein,max
einen unären Ufunc zu machen . Ich denke,amax
existierte, bevor Ufuncs wirklich eine Sache waren (es kam von numerischen, NumPys Eltern), also wird es auch für die Nachwelt aufbewahrt.maximum.reduce
wird für die Leistung bevorzugt: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()
Funktion bezieht als aufnumpy.max()
, aber es ist definitiv erwähnenswert, dass Pythonmax()
langsamer ist.Sie haben bereits angegeben, warum dies
np.maximum
anders ist - es wird ein Array zurückgegeben, das das elementweise Maximum zwischen zwei Arrays darstellt.Wie für
np.amax
undnp.max
: beide rufen dieselbe Funktion auf -np.max
ist nur ein Alias fürnp.amax
und sie berechnen das Maximum aller Elemente in einem Array oder entlang einer Achse eines Arrays.quelle
from numpy import max as np_max
nur getan , um Konflikte mit dem Generikum zu vermeiden,max
während ich nuramax
Häute hätte benutzen können .Der Vollständigkeit halber gibt es in Numpy vier maximal verwandte Funktionen. Sie fallen in zwei verschiedene Kategorien:
np.amax/np.max
,np.nanmax
: für Statistiken zur Reihenfolge einzelner Arraysnp.maximum
,np.fmax
denn elementweisen Vergleich von zwei ArraysI. Für Statistiken zur Reihenfolge einzelner Arrays
NaNs Propagator
np.amax/np.max
und sein ignorantes Gegenstück zu NaNnp.nanmax
.np.max
ist nur ein Alias vonnp.amax
, daher werden sie als eine Funktion betrachtet.np.max
vermehrt NaNs, währendnp.nanmax
NaNs ignoriert werden.II. Zum elementweisen Vergleich zweier Arrays
NaNs Propagator
np.maximum
und sein ignorantes Gegenstück zu NaNsnp.fmax
.Beide Funktionen erfordern zwei Arrays als die ersten beiden Positionsargumente, mit denen verglichen werden soll.
np.maximum
vermehrt NaNs, währendnp.fmax
NaNs ignoriert werden.Die elementweisen Funktionen sind
np.ufunc
( Universal Function ) , was bedeutet, dass sie einige spezielle Eigenschaften haben, die die normale Numpy-Funktion nicht hat.Und schließlich gelten für die vier Mindestfunktionen dieselben Regeln :
np.amin/np.min
,np.nanmin
;np.minimum
,np.fmin
.quelle
np.maximum
vergleicht nicht nur elementweise, sondern auch Array elementweise mit einem einzelnen Wertquelle