np.maxes 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 axisargumento 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.maximumes 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.maximumtambié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.maximumimitar np.maxhasta 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.
amaxpara 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, elaxisparámetro) impiden que sea unufunc?amaxno 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 paraamaxdecir específicamente quemaximumes más rápido aquí.amaxpodrí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 hacermaxun fallo unario. Creo queamaxexistí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.reducese 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.maximumes diferente: devuelve una matriz que es el máximo de elementos entre dos matrices.En cuanto a
np.amaxynp.max: ambos llaman a la misma función,np.maxes 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_maxlo posible para evitar conflictos con el genéricomaxtodo el tiempo, mientras que podría haber usadoamaxpieles .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.maxNaN y su contraparte ignorante de NaNnp.nanmax.np.maxes solo un alias denp.amax, por lo que se consideran como una función.np.maxpropaga NaNs mientrasnp.nanmaxignora NaNs.II Para la comparación por elementos de dos matrices
El propagador de NaN
np.maximumy su contraparte ignorante de NaNnp.fmax.Ambas funciones requieren dos matrices como los dos primeros argumentos posicionales para comparar.
np.maximumpropaga NaNs mientrasnp.fmaxignora 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.maximumno solo compara elementwise sino que también compara array elementwise con un solo valorfuente