np.max
é apenas um apelido para np.amax
. Essa função funciona apenas em uma única matriz de entrada e localiza o valor do elemento máximo em toda a matriz (retornando um escalar). Como alternativa, é necessário um axis
argumento e encontrará o valor máximo ao longo de um eixo da matriz de entrada (retornando uma nova 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])
O comportamento padrão de np.maximum
é pegar duas matrizes e calcular seu máximo em elementos. Aqui, 'compatível' significa que uma matriz pode ser transmitida para a outra. Por exemplo:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
Mas np.maximum
também é uma função universal, o que significa que ele possui outros recursos e métodos que são úteis ao trabalhar com matrizes multidimensionais. Por exemplo, você pode calcular o máximo cumulativo em uma matriz (ou em um eixo específico da matriz):
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
Isso não é possível com np.max
.
Você pode np.maximum
imitar np.max
até certo ponto ao usar np.maximum.reduce
:
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
O teste básico sugere que as duas abordagens são comparáveis em desempenho; e devem ser, como np.max()
realmente exigenp.maximum.reduce
o cálculo.
amax
com o mesmo objetivo (raiz) quemaximum
, ou seja, comnumpy.amax([a1, a2], axis=0)
--- mas isso não é tão otimizado para esse comportamento quantonumpy.maximum
? Da mesma forma, as gentilezas adicionadas denumpy.amax
(por exemplo, oaxis
parâmetro) a impedem de ser umaufunc
?amax
não é otimizado para comparação entre elementos - qualquer entrada precisará ser uma matriz Numpy, para que a lista seja convertida antes da operação ser executada (assumindo que as duas formas sejam iguais). Os documentos paraamax
especificamente dizem quemaximum
é mais rápido aqui.amax
poderia ser transformado em um ufunc, embora o principal objetivo do ufuncs seja permitir que as operações sejam transmitidas entre matrizes. Parece haver pouca necessidade de fazermax
um unário não funcionar. Eu acho queamax
existia antes dos ufuncs serem realmente uma coisa (veio do numérico, pai do NumPy), então também é mantido para a posteridade.maximum.reduce
é o preferido para o desempenho: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()
função interna do Python , e nãonumpy.max()
, mas definitivamente vale a pena ressaltar que o Pythonmax()
é mais lento.Você já declarou por que
np.maximum
é diferente - ele retorna uma matriz que é o máximo em elementos entre duas matrizes.Quanto a
np.amax
enp.max
: ambos chamam a mesma função -np.max
é apenas um alias paranp.amax
e calculam o máximo de todos os elementos em uma matriz, ou ao longo de um eixo de uma matriz.fonte
from numpy import max as np_max
apenas para evitar conflitos com os genéricosmax
o tempo todo, enquanto eu poderia ter usado apenasamax
couros .Para completar, em Numpy, existem quatro funções relacionadas máximas . Eles se enquadram em duas categorias diferentes:
np.amax/np.max
,np.nanmax
: para estatísticas de ordem de matriz únicanp.maximum
,np.fmax
: para a comparação de elemento a elemento de duas matrizesI. Para estatísticas de ordem de matriz única
Propagador de NaNs
np.amax/np.max
e seu equivalente ignorante de NaNnp.nanmax
.np.max
é apenas um apelido denp.amax
, então eles são considerados como uma função.np.max
propaga NaNs enquantonp.nanmax
ignora NaNs.II Para comparação entre elementos de duas matrizes
Propagador de NaNs
np.maximum
e seu equivalente ignorante de NaNsnp.fmax
.Ambas as funções requerem duas matrizes como os dois primeiros argumentos posicionais para comparação.
np.maximum
propaga NaNs enquantonp.fmax
ignora NaNs.As funções entre elementos são
np.ufunc
( Universal Function ) , o que significa que elas têm algumas propriedades especiais que a função Numpy normal não possui.E, finalmente, as mesmas regras se aplicam às quatro funções mínimas relacionadas:
np.amin/np.min
,np.nanmin
;np.minimum
,np.fmin
.fonte
np.maximum
não apenas compara os elementos, mas também a matriz dos elementos com um único valorfonte