np.max
sadece bir takma addır np.amax
. Bu işlev yalnızca tek bir giriş dizisi üzerinde çalışır ve bu dizinin tamamındaki maksimum öğenin değerini bulur (bir skaler döndürür). Alternatif olarak, bir axis
bağımsız değişken alır ve giriş dizisinin bir ekseni boyunca maksimum değeri bulur (yeni bir dizi döndürür).
>>> 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])
Varsayılan davranış np.maximum
alınmak iki diziler ve bunların öğeye göre maksimum hesaplamak. Burada 'uyumlu', bir dizinin diğerine yayınlanabileceği anlamına gelir. Örneğin:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
Ancak np.maximum
aynı zamanda evrensel bir işlevdir , bu da çok boyutlu dizilerle çalışırken yararlı olan başka özelliklere ve yöntemlere sahip olduğu anlamına gelir. Örneğin, bir dizi (veya dizinin belirli bir ekseni) üzerindeki kümülatif maksimum değeri hesaplayabilirsiniz:
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
Bu ile mümkün değil np.max
.
Şunları kullanırken bir dereceye kadar np.maximum
taklit edebilirsiniz :np.max
np.maximum.reduce
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
Temel testler, iki yaklaşımın performans açısından karşılaştırılabilir olduğunu göstermektedir; ve np.max()
aslındanp.maximum.reduce
hesaplamayı yapmak için çağrılar gibi olmalılar .
amax
aynı (kök) amaç için kullanılabilirmaximum
,numpy.amax([a1, a2], axis=0)
ancak bu, bu davranış için olduğu kadar optimize edilmemişnumpy.maximum
mi? Benzer şekilde, eklenen niteliklernumpy.amax
(örneğinaxis
parametre) onun a olmasını engelliyorufunc
mu?