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
?