np.max
è solo un alias per np.amax
. Questa funzione funziona solo su un singolo array di input e trova il valore dell'elemento massimo nell'intero array (restituendo uno scalare). In alternativa, accetta un axis
argomento e trova il valore massimo lungo un asse dell'array di input (restituendo un nuovo array).
>>> 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])
Il comportamento predefinito di np.maximum
è prendere due matrici e calcolare il massimo degli elementi. Qui, "compatibile" significa che un array può essere trasmesso all'altro. Per esempio:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
Ma np.maximum
è anche una funzione universale, il che significa che ha altre caratteristiche e metodi che risultano utili quando si lavora con array multidimensionali. Ad esempio, è possibile calcolare il massimo cumulativo su un array (o un asse particolare dell'array):
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
Questo non è possibile con np.max
.
Puoi np.maximum
imitare np.max
in una certa misura quando usi np.maximum.reduce
:
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
Test di base suggeriscono che i due approcci sono comparabili nelle prestazioni; e dovrebbero essere, come in np.max()
realtà chiamanp.maximum.reduce
per fare il calcolo.
amax
per lo stesso scopo (root) dimaximum
, cioè connumpy.amax([a1, a2], axis=0)
--- ma questo non è ottimizzato per questo comportamento comenumpy.maximum
? Allo stesso modo, le bellezze aggiunte dinumpy.amax
(ad esempio ilaxis
parametro) impediscono che sia unufunc
?