numpy.maximum

numpy.maximum(x1, x2, *ufunc_args) = <ufunc 'maximum'>

Функция numpy.maximum() возвращает наибольшие значения поэлементного сравнения значений массивов.

Параметры:
x1, x2 - число, массив или подобный массиву объект
Сравниваемые значения. Если это массив или последовательности, то они должны быть либо одинаковой, либо совместимой формы.
*ufunc_args - аргументы универсальной функции
Аргументы, позволяющие настроить и оптимизировать работу функции (подробнее см. универсальные функции).
Возвращает:
результат - массив NumPy или вещественное число
Массив чисел каждое из которых является наибольшим в поэлемнтном сравнении x1 и x2. Возвращает число, если x1 и x2 являются числами.

Замечание

Если одно из сравниваемых значений равно nan, то результатом будет nan. Если оба элемента равны nan, то возвращается первый из них - это правило очень важно при сравнении комплексных чисел, у которых действительная или мнимая часть может быть равна nan, например:

>>> import numpy as np
>>> 
>>> np.complex(np.nan, 3)
(nan+3j)
>>> 
>>> np.complex(3, np.nan)
(3+nanj)
>>>
>>> np.maximum(np.complex(np.nan, 3), np.complex(3, np.nan))
(nan+3j)

Данная функция эквивалентна numpy.where(x1 >= x2, x1, x2), но numpy.where() медленнее, не поддерживает значения nan и транслирование.

Смотрите так же: minimum, fmax.html, fmin

Примеры

>>> import numpy as np
>>> 
>>> np.maximum(3, 7)
7
>>> 
>>> np.maximum([3, 13, 23], [7, 5, 41])
array([ 7, 13, 41])
>>> 
>>> np.maximum([1e-10, 1e-300], [9e-10, 1e-301])
array([9.e-010, 1.e-300])
>>> 
>>> #  Возможно транслирование массивов:
... x1 = np.random.randint(-10, 10, size = (5, 5))
>>> x1
array([[ 8, -6, -9, -3, -5],
       [-4, -3, -2,  7,  7],
       [ 5,  5, -1,  2,  3],
       [-1,  8,  1, -6, -5],
       [ 1, -4, -6,  5, -9]])
>>> 
>>> x2 = np.random.randint(0, 10, size = (5,))
>>> x2
array([1, 7, 0, 5, 2])
>>> 
>>> np.maximum(x1, x2)
array([[8, 7, 0, 5, 2],
       [1, 7, 0, 7, 7],
       [5, 7, 0, 5, 3],
       [1, 8, 1, 5, 2],
       [1, 7, 0, 5, 2]])
>>> 
>>> 
>>> x2 = np.random.randint(0, 10, size = (5, 1))
>>> x2
array([[5],
       [2],
       [5],
       [5],
       [8]])
>>> 
>>> np.maximum(x1, x2)
array([[8, 5, 5, 5, 5],
       [2, 2, 2, 7, 7],
       [5, 5, 5, 5, 5],
       [5, 8, 5, 5, 5],
       [8, 8, 8, 8, 8]])
>>> 
>>> x2 = 5
>>> 
>>> np.maximum(x1, x2)
array([[8, 5, 5, 5, 5],
       [5, 5, 5, 7, 7],
       [5, 5, 5, 5, 5],
       [5, 8, 5, 5, 5],
       [5, 5, 5, 5, 5]])
>>> 
>>>
>>> np.maximum([np.nan, np.nan, np.inf, np.inf], [1, np.inf, 1, -np.inf])
array([nan, nan, inf, inf])