np.max
tylko aliasem np.amax
. Ta funkcja działa tylko na jednej macierzy wejściowej pojedynczej i znajduje wartość maksymalnego elementu w całej tablicy (zwracając skalar). Alternatywnie, pobiera argument o wartości axis
i znajduje 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ślne zachowanie np.maximum
jest podjęcie dwa tablice i obliczyć ich element mądry maksimum. W tym przypadku "zgodny" oznacza, że jedna tablica 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
również universal function co oznacza, że ma inne właściwości i metod, które się przydać podczas pracy z wielowymiarowych tablic. Dla przykładu można obliczyć skumulowaną maksymalną nad tablicy (albo z 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 możliwe np.max
.
Można dokonać np.maximum
naśladować np.max
do pewnego stopnia podczas korzystania np.maximum.reduce
:
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
badania podstawowe sugeruje dwa podejścia są porównywalne pod względem wydajności.
Dzięki. Oczywiście można użyć 'amax' dla tego samego (root) celu jak' maksimum', tj. Z 'numpy.amax ([a1, a2], axis = 0)' --- ale czy nie jest to tak zoptymalizowane dla tego zachowania, jak "numpy.maximum"? Podobnie, dodana nicetia z 'numpy.amax' (np. Parametr' axis') wyklucza to, że jest 'ufunc'? – DilithiumMatrix
To prawda, 'amax' nie jest zoptymalizowany pod względem porównania elementów w tym - każde wejście musi być tablicą Numpy, tak aby lista była konwertowana przed uruchomieniem operacji (zakładając, że dwa kształty były takie same). Dokumenty "amax" wyraźnie mówią, że "maksimum" jest tutaj szybsze. –
Na drugie pytanie: domyślam się, że 'amax' * może * zostać przekształcone w ufunc, chociaż głównym celem ufuncs jest umożliwienie transmisji operacji pomiędzy tablicami. Wydaje się, że nie ma potrzeby, aby "max" był unariennym ufunc. Myślę, że 'amax' istniał przed tym, jak ufuncs były naprawdę rzeczą (pochodziło z numerycznego, rodzica NumPy), więc jest również przechowywane dla potomności. –