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
?amax
nie jest zoptymalizowany pod kątem porównania elementów w tym - wszelkie dane wejściowe będą musiały być tablicą Numpy, aby lista została przekonwertowana przed uruchomieniem operacji (zakładając, że dwa kształty były takie same). Dokumentyamax
specjalnie podają, żemaximum
jest tu szybciej.amax
można by go przekształcić w ufunc, chociaż głównym celem ufuncs jest umożliwienie transmisji operacji między tablicami. Wydaje się, że nie ma potrzeby tworzeniamax
jednoargumentowego ufunc. Myślę, żeamax
istniało zanim ufuncs naprawdę było czymś (pochodzi od numeric, rodzic NumPy), więc jest również zachowane dla potomności.maximum.reduce
preferowane wykonanie: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()
, a nienumpy.max()
, ale zdecydowanie warto zauważyć, że Pythonmax()
jest wolniejszy.Powiedziałeś już, dlaczego
np.maximum
jest inny - zwraca tablicę, która jest maksymalnym elementem między dwiema tablicami.Jeśli chodzi o
np.amax
inp.max
: obaj wywołują tę samą funkcję -np.max
jest po prostu aliasemnp.amax
i obliczają maksimum wszystkich elementów w tablicy lub wzdłuż osi tablicy.źródło
from numpy import max as np_max
tylko po to, żeby przezmax
cały czas unikać konfliktu z generycznym, podczas gdy mogłem po prostu używaćamax
skór .Aby uzyskać kompletność, w Numpy istnieją cztery maksymalne powiązane funkcje. Można je podzielić na dwie różne kategorie:
np.amax/np.max
,np.nanmax
: dla statystyki kolejności pojedynczych tablicnp.maximum
,np.fmax
bo mądry element porównywania dwóch tablicI. Na jednej tablicy statystyk porządkowych
Propagator NaNs
np.amax/np.max
i jego ignorancki odpowiednik NaNnp.nanmax
.np.max
jest po prostu aliasemnp.amax
, więc są traktowane jako jedna funkcja.np.max
propaguje NaN,np.nanmax
ignorując NaN.II. Do porównania elementów dwóch tablic
Propagator NaNs
np.maximum
i jego ignorancki odpowiedniknp.fmax
.Obie funkcje wymagają dwóch tablic jako pierwszych dwóch argumentów pozycyjnych do porównania.
np.maximum
propaguje NaN,np.fmax
ignorując NaN.Funkcje elementarne to
np.ufunc
( Universal Function ) , co oznacza, że mają pewne specjalne właściwości, których normalna funkcja Numpy nie ma.I wreszcie, te same zasady dotyczą czterech minimalnych powiązanych funkcji:
np.amin/np.min
,np.nanmin
;np.minimum
,np.fmin
.źródło
np.maximum
nie tylko porównuje elementarnie, ale także porównuje elementarnie tablicę z pojedynczą wartościąźródło