numpy.amin
numpy.amin(a, axis=None, out=None, keepdims=<no value>, initial=<no value>)
Функция amin() возвращает минимальное значение элементов массива. Параметр axis
позволяет указывать оси, вдоль которых необходим поиск минимальных значений.
Является эквивалентной функции np.min()
.
-
- a - массив NumPy или подобный массиву объект.
- Входные данные.
- axis - целое число или кортеж целых чисел, необязательный параметр.
-
Указывает ось или оси по которым выполняется поиск (доступно в NumPy с версии 1.7.0). По умолчанию
axis = None
, что соответствует поиску в массивеa
так, словно он сжат до одной оси. - out - массив NumPy, необязательный параметр.
- Массив в который можно поместить результат функции. Данный массив должен соответствовать форме и типу данных результирующего массива функции (зачастую, тип данных может быть преобразован автоматически). Указание данного параметра, позволяет избежать лишней операции присваивания тем самым немного ускоряя работу вашего кода. Полезный параметр если вы очень часто обращаетесь к функции в цикле.
- keepdims - True или False, необязательный параметр.
- Если данный параметр указан как True, то результат работы функции по указанным осям будет способен к транслированию по исходному массиву, т.е. результат функции оформляется в массив с количеством осей исходного массива. Если параметр установлен в значение False, то результатом работы функции будет либо число, либо одномерный массив чисел.
- initial - число, необязательный параметр.
- Число, которое возвращается, если не найдется меньшее значение. Этот параметр должен обязательно присутствовать, если в вашем коде возможна передача данной функции пустого массива или пустого среза. Доступно в NumPy с версии 1.15.0.
-
- результат - число или массив NumPy
- Если параметр
axis
не указан, то будет возвращено одно число - элемент с минимальным значением в исходном массиве. Если в параметреaxis
указана одна ось, то будет возвращен массив, содержащий минимальные элементы вдоль указанной оси с формойa.ndim - 1
. Если количество указанных осей равно d, то будет возвращен массив с формойa.ndim - d
.
Замечание
Значения np.nan
в исходном массиве не вызывают ошибок. Более того, если массив содержит хоть одно значение np.nan
, то оно будет возвращено. Для игнорирования этих значений можно воспользоваться функцией numpy.nanmin()
.
Если по первой оси входного массива a
располагается всего два элемента (подмассива), то команда np.minimum(a[0], a[1])
окажется быстрее чем np.amin(a, axis = 0)
>>> import numpy as np
>>>
>>> a = np.random.randint(50, size = (2, 2, 4))
>>> a
array([[[47, 15, 5, 20],
[20, 9, 30, 38]],
[[28, 24, 34, 6],
[17, 48, 21, 45]]])
>>>
>>> np.minimum(a[0], a[1])
array([[28, 15, 5, 6],
[17, 9, 21, 38]])
>>>
>>> np.amin(a, axis = 0)
array([[28, 15, 5, 6],
[17, 9, 21, 38]])
Примеры
Применение функции к двумерному массиву:
>>> import numpy as np
>>>
>>> a = np.random.randint(50, size = (5, 5))
>>> a
array([[35, 30, 3, 49, 5],
[14, 28, 17, 24, 13],
[ 2, 8, 22, 40, 15],
[ 9, 49, 3, 19, 13],
[45, 18, 9, 13, 19]])
>>>
>>> # Минимальное значение массива:
... np.amin(a)
2
>>>
>>> # Минимальное значение каждого столбца:
... np.amin(a, axis = 0)
array([ 2, 8, 3, 13, 5])
>>>
>>> # Минимальное значение каждой строки:
... np.amin(a, axis = 1)
array([ 3, 13, 2, 3, 9])
Применение функции к трехмерному массиву:
>>> a = np.random.randint(50, size = (3, 2, 4))
>>> a
array([[[35, 32, 46, 5],
[13, 37, 0, 11]],
[[23, 41, 37, 28],
[22, 0, 4, 39]],
[[34, 44, 2, 34],
[47, 46, 24, 34]]])
>>>
>>> np.amin(a)
0
>>> np.amin(a, axis = 0)
array([[23, 32, 2, 5],
[13, 0, 0, 11]])
>>>
>>> np.amin(a, axis = 1)
array([[13, 32, 0, 5],
[22, 0, 4, 28],
[34, 44, 2, 34]])
>>>
>>> np.amin(a, axis = 2)
array([[ 5, 0],
[23, 0],
[ 2, 24]])
>>>
>>> np.amin(a, axis = (0, 1))
array([13, 0, 0, 5])
>>>
>>> np.amin(a, axis = (0, 2))
array([2, 0])
>>>
>>> np.amin(a, axis = (1, 2))
array([0, 0, 2])
Параметр keepdims
позволяет результирующему массиву сохранить форму исходного массива, что, в свою очередь, позволяет в дальнейшем использовать механизм транслирования массивов:
>>> a = np.random.randint(50, size = (3, 3))
>>> a
array([[ 5, 19, 11],
[ 8, 14, 48],
[ 1, 8, 19]])
>>>
>>> b = np.amin(a, axis = 0, keepdims = True)
>>> b
array([[ 1, 8, 11]])
>>>
>>> c = np.amin(a, axis = 1, keepdims = True)
>>> c
array([[5],
[8],
[1]])
>>>
>>>
>>> x = np.zeros((5, 3))
>>> x
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
>>>
>>> y = np.ones((3, 5))
>>> y
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
>>>
>>>
>>> x + b
array([[ 1., 8., 11.],
[ 1., 8., 11.],
[ 1., 8., 11.],
[ 1., 8., 11.],
[ 1., 8., 11.]])
>>>
>>> y*c
array([[5., 5., 5., 5., 5.],
[8., 8., 8., 8., 8.],
[1., 1., 1., 1., 1.]])
Для массивов, содержащих np.nan
возвращается np.nan
:
>>> a = np.random.rand(4)
>>> a
array([0.43102009, 0.1311647 , 0.95683985, 0.44932507])
>>>
>>> a[-1] = np.nan
>>> a
array([0.43102009, 0.1311647 , 0.95683985, nan])
>>>
>>> np.amin(a)
nan
>>>
>>> np.nanmin(a)
0.1311646979310679
Если задано значение параметра initial
, то оно будет возвращено, если в массиве или на определенной его оси не окажется элементов с меньшим значением:
>>> np.amin([], initial = 0)
0.0
>>>
>>> np.amin([1, 2, 3])
1
>>> np.amin([1, 2, 3], initial = 0)
0
>>>
>>> np.amin([[-2, -1], [1, 2]], axis = 1, initial = 0)
array([-2, 0])