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
параметр) ему бытьufunc
?