numpy.fmin
numpy.fmin(x1, x2, *ufunc_args) = <ufunc 'fmin'>
Функция fmin() возвращает наименьшие значения поэлементного сравнения значений массивов в виде чисел с плавающей точкой.
-
- 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.fmin(np.complex(np.nan, 3), np.complex(3, np.nan))
(nan+3j)
Главное отличие от numpy.minimum()
заключается в игнорировании значений nan, когда это возможно.
Данная функция эквивалентна numpy.where(x1 <= x2, x1, x2)
, но numpy.where()
медленнее, не поддерживает значения nan и транслирование.
Доступна в NumPy с версии 1.3.0.
Примеры
>>> import numpy as np
>>>
np.fmin([np.nan, np.nan, np.inf, np.inf, np.nan],
[1, np.inf, 1, -np.inf, np.nan])
array([ 1., inf, 1., -inf, nan])
>>>
>>> np.fmin(3, 7)
3
>>>
>>> np.fmin([3, 13, 23], [7, 5, 41])
array([ 3, 5, 23])
>>>
>>> np.fmin([1e-10, 1e-300], [9e-10, 1e-301])
array([1.e-010, 1.e-301])
>>>
>>> # Возможно транслирование массивов:
... x1 = np.random.randint(-10, 10, size = (5, 5))
>>> x1
array([[ 7, 1, 4, -1, 0],
[ -8, -10, 3, 2, 8],
[ 2, -1, 3, -1, 6],
[ 0, 3, -1, 2, -4],
[ -2, 0, -1, 0, 0]])
>>>
>>> x2 = np.random.randint(-5, 0, size = (5,))
>>> x2
array([-1, -3, -1, -4, -1])
>>>
>>> np.fmin(x1, x2)
array([[ -1, -3, -1, -4, -1],
[ -8, -10, -1, -4, -1],
[ -1, -3, -1, -4, -1],
[ -1, -3, -1, -4, -4],
[ -2, -3, -1, -4, -1]])
>>>
>>> x2 = np.random.randint(-5, 0, size = (5, 1))
>>> x2
array([[-5],
[-2],
[-3],
[-3],
[-2]])
>>>
>>> np.fmin(x1, x2)
array([[ -5, -5, -5, -5, -5],
[ -8, -10, -2, -2, -2],
[ -3, -3, -3, -3, -3],
[ -3, -3, -3, -3, -4],
[ -2, -2, -2, -2, -2]])
>>>
>>>
>>> x2 = -3
>>>
>>> np.fmin(x1, x2)
array([[ -3, -3, -3, -3, -3],
[ -8, -10, -3, -3, -3],
[ -3, -3, -3, -3, -3],
[ -3, -3, -3, -3, -4],
[ -3, -3, -3, -3, -3]])