numpy.amin

numpy.amin(a, axis=None, out=None, keepdims=<no value>, initial=<no value>)

Функция numpy.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]])
Смотрите так же:
amax, nanmax, nanmin

Примеры

Применение функции к двумерному массиву:

>>> 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])