np.max
це лише псевдонім для np.amax
. Ця функція працює лише на одному вхідному масиві і знаходить значення максимального елемента в цілому масиві (повертаючи скаляр). Крім того, він бере axis
аргумент і знайде максимальне значення уздовж осі вхідного масиву (повертаючи новий масив).
>>> 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])
Поведінка за замовчуванням np.maximum
- це взяти два масиви і обчислити їх максимум для елементів. Тут "сумісний" означає, що один масив може передаватися іншому. Наприклад:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
Але np.maximum
це також універсальна функція, яка означає, що вона має інші особливості та методи, які корисні при роботі з багатовимірними масивами. Наприклад, ви можете обчислити сукупний максимум через масив (або певну вісь масиву):
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
З цим неможливо np.max
.
Ви можете np.maximum
імітувати np.max
певною мірою, використовуючи np.maximum.reduce
:
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
Основне тестування передбачає, що два підходи порівнянні за ефективністю; і вони повинні бути, як np.max()
насправді вимагаєnp.maximum.reduce
зробити обчислення.
amax
для тієї ж (кореневої) мети, якmaximum
, наприклад, зnumpy.amax([a1, a2], axis=0)
--- але це не так оптимізовано для такої поведінки, якnumpy.maximum
? Аналогічно, чи не додають смакові якостіnumpy.amax
(наприклад,axis
параметр) не бути aufunc
?