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
?amax
no está optimizado para la comparación de elementos sabios en esto: cualquier entrada deberá ser una matriz Numpy, por lo que esa lista se convertiría antes de que se ejecutara la operación (suponiendo que las dos formas fueran las mismas). Los documentos paraamax
decir específicamente quemaximum
es más rápido aquí.amax
podría convertirse en un ufunc, aunque el objetivo principal de los ufuncs es permitir que las operaciones se transmitan entre matrices. Parece que hay poca necesidad de hacermax
un fallo unario. Creo queamax
existía antes de que los ufuncs fueran realmente una cosa (vino de numérico, el padre de NumPy), por lo que también se mantiene para la posteridad.maximum.reduce
se prefiere para el rendimiento: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()
función integrada de Python , en lugar de hacerlonumpy.max()
, pero definitivamente vale la pena señalar que Pythonmax()
es más lento.Ya ha indicado por qué
np.maximum
es diferente: devuelve una matriz que es el máximo de elementos entre dos matrices.En cuanto a
np.amax
ynp.max
: ambos llaman a la misma función,np.max
es solo un alias paranp.amax
, y calculan el máximo de todos los elementos en una matriz, o a lo largo de un eje de una matriz.fuente
from numpy import max as np_max
lo posible para evitar conflictos con el genéricomax
todo el tiempo, mientras que podría haber usadoamax
pieles .Para completar, en Numpy hay cuatro funciones relacionadas máximas . Se dividen en dos categorías diferentes:
np.amax/np.max
,np.nanmax
: para estadísticas de orden de matriz únicanp.maximum
,np.fmax
: para la comparación elemento a elemento de dos matricesI. Para estadísticas de orden de matriz única
El propagador de
np.amax/np.max
NaN y su contraparte ignorante de NaNnp.nanmax
.np.max
es solo un alias denp.amax
, por lo que se consideran como una función.np.max
propaga NaNs mientrasnp.nanmax
ignora NaNs.II Para la comparación por elementos de dos matrices
El propagador de NaN
np.maximum
y su contraparte ignorante de NaNnp.fmax
.Ambas funciones requieren dos matrices como los dos primeros argumentos posicionales para comparar.
np.maximum
propaga NaNs mientrasnp.fmax
ignora NaNs.Las funciones de elementos sabios son
np.ufunc
( Función universal ) , lo que significa que tienen algunas propiedades especiales que la función Numpy normal no tiene.Y finalmente, las mismas reglas se aplican a las cuatro funciones mínimas relacionadas:
np.amin/np.min
`np.nanmin
`np.minimum
,np.fmin
.fuente
np.maximum
no solo compara elementwise sino que también compara array elementwise con un solo valorfuente