np.max
es solo un alias para np.amax
. Esta función solo funciona en una matriz de entrada única y encuentra el valor del elemento máximo en toda la matriz (devolviendo un escalar). Alternativamente, toma un axis
argumento y encontrará el valor máximo a lo largo de un eje de la matriz de entrada (devolviendo una nueva matriz).
>>> 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])
El comportamiento predeterminado de np.maximum
es tomar dos matrices y calcular su máximo en cuanto a elementos. Aquí, 'compatible' significa que una matriz se puede transmitir a la otra. Por ejemplo:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
Pero np.maximum
también es una función universal, lo que significa que tiene otras características y métodos que resultan útiles al trabajar con matrices multidimensionales. Por ejemplo, puede calcular el máximo acumulativo sobre una matriz (o un eje particular de la matriz):
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
Esto no es posible con np.max
.
Puedes np.maximum
imitar np.max
hasta cierto punto cuando usas np.maximum.reduce
:
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
Las pruebas básicas sugieren que los dos enfoques son comparables en rendimiento; y deberían serlo, ya que np.max()
realmente llamanp.maximum.reduce
a hacer el cálculo.
amax
para el mismo propósito (raíz) quemaximum
, es decir, connumpy.amax([a1, a2], axis=0)
--- pero ¿no está tan optimizado para este comportamiento comonumpy.maximum
? Del mismo modo, ¿las sutilezas añadidas denumpy.amax
(por ejemplo, elaxis
parámetro) impiden que sea unufunc
?