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
?amax
здесь не оптимизировано для поэлементного сравнения - любой ввод должен быть массивом Numpy, чтобы этот список был преобразован до выполнения операции (при условии, что две формы были одинаковыми). В документацииamax
конкретно говорится, чтоmaximum
здесь быстрее.amax
можно было бы превратить в ufunc, хотя основная цель ufuncs - разрешить широковещательную передачу операций между массивами. Кажется, нет необходимости делатьmax
унарный ufunc. Я думаю, чтоamax
существовали до того, как ufuncs действительно стали вещью (это произошло от numeric, родительского элемента NumPy), поэтому также сохраняется для потомков.maximum.reduce
предпочтительный вариант для выступления: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()
функции Python , а неnumpy.max()
, но определенно стоит отметить, что Pythonmax()
работает медленнее.Вы уже указали, почему
np.maximum
отличается - он возвращает массив, который является поэлементным максимумом между двумя массивами.Что касается
np.amax
иnp.max
: они оба вызывают одну и ту же функцию -np.max
это просто псевдоним дляnp.amax
, и они вычисляют максимум всех элементов в массиве или вдоль оси массива.источник
from numpy import max as np_max
просто, чтобы избежать конфликта с универсальным,max
в то время как я мог бы просто использоватьamax
шкуры .Для полноты, в Numpy есть максимум четыре связанных функции. Они делятся на две разные категории:
np.amax/np.max
,np.nanmax
: для статистики порядка одного массиваnp.maximum
,np.fmax
: для поэлементного сравнения двух массивовI. Для статистики заказов одного массива
Распространитель
np.amax/np.max
NaN и его невежественный аналогnp.nanmax
.np.max
это просто псевдонимnp.amax
, поэтому они рассматриваются как одна функция.np.max
распространяет NaN,np.nanmax
игнорируя NaN.II. Для поэлементного сравнения двух массивов
Распространитель NaN
np.maximum
и его невежественный аналогnp.fmax
.Обе функции требуют двух массивов в качестве первых двух позиционных аргументов для сравнения.
np.maximum
распространяет NaN,np.fmax
игнорируя NaN.Поэлементными функциями являются
np.ufunc
( Универсальная функция ) , что означает, что у них есть некоторые особые свойства, которых нет у обычной функции Numpy.И, наконец, те же правила применяются к четырем минимальным связанным функциям:
np.amin/np.min
,np.nanmin
;np.minimum
,np.fmin
.источник
np.maximum
не только сравнивает поэлементно, но и сравнивает поэлементно массив с одним значениемисточник