np.max
jest tylko aliasem dla np.amax
. Ta funkcja działa tylko na pojedynczej tablicy wejściowej i znajduje wartość maksymalnego elementu w całej tablicy (zwraca wartość skalarną). Alternatywnie, pobiera axis
argument i znajdzie maksymalną wartość wzdłuż osi tablicy wejściowej (zwracając nową tablicę).
>>> 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])
Domyślnym zachowaniem programu np.maximum
jest pobranie dwóch tablic i obliczenie ich maksimum pod względem elementów. Tutaj „kompatybilny” oznacza, że jedna macierz może być transmitowana do drugiej. Na przykład:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
Ale np.maximum
jest również funkcją uniwersalną, co oznacza, że ma inne cechy i metody, które przydają się podczas pracy z wielowymiarowymi tablicami. Na przykład możesz obliczyć skumulowane maksimum na tablicy (lub określonej osi tablicy):
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
Nie jest to możliwe w przypadku np.max
.
Możesz do pewnego stopnia np.maximum
naśladować, np.max
używając np.maximum.reduce
:
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
Podstawowe testy sugerują, że te dwa podejścia są porównywalne pod względem wydajności; i powinny być, tak jak w np.max()
rzeczywistości wzywanp.maximum.reduce
do wykonania obliczeń.
amax
tego samego (głównego) celu, jakmaximum
np. Znumpy.amax([a1, a2], axis=0)
---, ale czy nie jest to tak zoptymalizowane pod kątem tego zachowania, jaknumpy.maximum
? Podobnie, czy dodane dodatkinumpy.amax
(np.axis
Parametr) uniemożliwiają mu bycie aufunc
?