Библиотека numpy предоставляет функцию для получения максимального значения из массива Numpy в Python. Эта функция numpy — amax(), используемая для получения максимального значения из ndarray. Давайте разберем ее подробно.
Что такое функция np.amax() в Python?
Функция numpy.amax() возвращает максимум массива или максимум по оси(если указано). Функция np.amax() в Python принимает четыре аргумента: arr, axis, out и keepdims и возвращает максимальное значение массива.
Для одномерного массива мы можем легко найти самый большой элемент, но для многомерного массива мы также можем найти самый большой элемент каждой строки и столбца.
Синтаксис
|
1 |
numpy.amax(arr, axis=None, out=None, keepdims=<no value>, initial=<no value>) |
Параметры
Функция amax() принимает до четырех аргументов:
- arr -> Это массив, из которого мы можем найти максимальное значение.
- axis -> Указывает ось, по которой мы хотим найти самый большой элемент. В противном случае он будет считать массив сглаженным. В этом случае, если мы предоставляем axis=0, возвращается массив, содержащий самый большой элемент для каждого столбца. Если axis=1, он возвращает массив, содержащий наибольший элемент из каждой строки.
- out -> Это необязательное поле, указывает на альтернативный выходной массив, в который помещается результат.
- keepdims -> необязательный. Если для этого установлено значение True, то уменьшенная ось остается в результате как размеры с размером 1. С этой опцией результат будет корректно транслироваться относительно входного массива. Если передано значение по умолчанию, то keepdims не будут передаваться всем методам подклассов ndarray. Однако любое значение, отличное от значения по умолчанию, будет передано. Любые исключения будут вызваны, если метод суммы подклассов не реализует keepdims.
Возвращаемое значение
Функция numpy.amax() возвращает максимальное значение массива двух типов.
- Scaler -> Если ось упоминается, None.
- Array -> размерности arr.ndim-1, если указана ось.
Примеры программирования
Нахождение максимального значения одномерного массива
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# Importing numpy import numpy as np # We will create an 1D array arr = np.array([40, 24, 14, 63, 121, 4, 64]) # Printing the array print("The array is: ", arr) # Shape of the array print("Shape of the array is : ", np.shape(arr)) # Now we will print the max value of this array print("Maximum value of the given array is: ", np.amax(arr)) |
Выход
|
1 2 3 |
The array is: [ 40 24 14 63 121 4 64] Shape of the array is : (7,) Maximum value of the given array is: 121 |
Объяснение.
В этой программе мы сначала объявили массив, и некоторые пользователи задавали случайные числа. Затем мы напечатали форму(размер) массива. Затем мы вызвали amax(), чтобы получить максимальный элемент из массива. Мы видим, что максимальный элемент этого массива равен 121, и выход также равен 121.
Поиск максимального значения многомерного массива в Python
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#Importing numpy import numpy as np #We will create a 2D array #Of shape 4x3 arr = np.array([(14, 29, 34),(41, 55, 46),(1, 38, 29),(5, 57, 52)]) #Printing the array print("The array is: ") print(arr) print("Shape of the array is: ", np.shape(arr)) #Now we will find the maximum value for some cases #Maximum value of the whole array print("Maximum value of the whole array is: ", np.amax(arr)) #Maximum value of each row a = np.amax(arr, axis=1) print("Maximum value of each row of the array is: ", a) #Maximum value of each column b = np.amax(arr, axis=0) print("Maximum value of each column of the array is: ", b) |
Выход
|
1 2 3 4 5 6 7 8 9 |
Output: [[14 29 34] [41 55 46] [ 1 38 29] [ 5 57 52]] Shape of the array is: (4, 3) Maximum value of the whole array is: 57 Maximum value of each row of the array is: [34 55 38 57] Maximum value of each column of the array is: [41 57 52] |
Объяснение
В этой программе мы сначала объявили матрицу размера 4×3; вы также можете увидеть форму матрицы, которая равна(4,3). Затем мы вызвали amax(), чтобы получить вывод о различных случаях.
- В первом случае мы только что передали arr в функцию amax(), которая возвращает максимальное значение во всем массиве, потому что массив сглаживается, если мы не указываем ось.
- Во втором случае мы передали arr и axis=1, что возвращает массив размера 4, содержащий все максимальные элементы из каждой строки.
- В третьем мы передали arr и axis=0 , что возвращает массив размера 3, содержащий все максимальные элементы из каждого столбца.
Отличия Numpy max(), amax() и maximum()
У Numpy есть три разных метода, которые, кажется, могут использоваться для одних и тех же вещей, за исключением того, что функция numpy.maximum может использоваться только поэлементно, а функции numpy.max() и numpy.amax() могут использоваться для определенных оси или все элементы. В чем разница между всеми ними?
Функция np.max — это просто псевдоним для np.amax(). Функция numpy.max() работает только с одним входным массивом и находит значение максимального количества элементов во всем этом массиве(возвращая скаляр). В качестве альтернативы он принимает аргумент оси и находит максимальное значение по оси входного массива(возвращая новый массив).
См. следующий код.
|
1 2 3 4 5 6 |
import numpy as np arr = np.array([[0, 11, 21], [19, 20, 1]]) print(np.max(arr)) |
Выход
|
1 2 |
python3 app.py 21 |
Вывод показывает, что значение max() возвращает максимальное значение из всего массива. Если мы укажем конкретную ось, она вернет максимальное значение в соответствии с осью. Итак, давайте добавим еще один параметр, ось = 1.
|
1 2 3 4 5 6 7 8 |
# app.py import numpy as np arr = np.array([[0, 11, 21], [19, 20, 1]]) print(np.max(arr, axis=1)) |
Выход
|
1 2 |
python3 app.py [21 20] |
По умолчанию np.maximum() берет два массива и вычисляет их максимум по элементам. Здесь «совместимость» означает, что один массив может транслироваться в другой.
Но np.maximum() также является универсальной функцией, а это значит, что у нее есть другие функции и методы, которые пригодятся при работе с многомерными массивами.
Например, вы можете вычислить совокупный максимум по массиву.
|
1 2 3 4 5 6 7 |
# app.py import numpy as np arr = np.array([21, 0, 31, -41, -21, 18, 19]) print(np.maximum.accumulate(arr)) |
Выход
|
1 2 |
python3 app.py [21 21 31 31 31 31 31] |
Это невозможно с функцией np.max(). Вы можете заставить np.maximum() имитировать np.max() в определенной степени при использовании функции np.maximum.reduce().
