NumPy argmin(): Получение индекса минимального значения в массивах
В этом учебнике вы научитесь использовать функцию NumPy argmin()
, чтобы найти позицию индекса минимального значения в массиве NumPy. Функция np.argmin()
предлагает невероятные возможности для работы с одномерными и многомерными массивами. Вы также узнаете, как расширить функциональность до Pandas DataFrames, что позволит вам находить значения в разных столбцах.
Ищете способ найти индекс максимального значения в массиве NumPy? Для этого можно использовать функцию NumPy argmax()
К концу этого руководства вы узнаете:
Как использовать функцию
np.argmin()
для поиска индекса наименьшего значения в массиве NumPyКак работать с одномерными и многомерными массивами для нахождения индекса минимального значения, в том числе при работе с разными осями
Как расширить функцию
np.argmin()
на DataFrames Pandas
Оглавление
Понимание функции NumPy argmin
В этом разделе вы узнаете, как работает функция np.argmin()
и какие различные параметры доступны в этой функции. Это может быть важным первым шагом в понимании использования функции. Давайте рассмотрим, из чего состоит функция:
# Понимание функции argmin в NumPy
import numpy as np
np.argmin(
# Массив чисел для поиска минимального значения
a,
# Ось, по которой необходимо найти минимальное значение (по умолчанию - None)
axis=None,
# Локация для хранения результата (по умолчанию - None)
out=None,
# Флаг сохранения размерности в результате (по умолчанию - False)
keepdims=<no value>
)
Мы видим, что функция принимает четыре параметра, из которых только один является обязательным. В таблице ниже приведено разбиение различных параметров и их аргументов по умолчанию:
a=
Входной массив
N/A
array-like
axis=
По какой оси искать минимальное значение. Если None
, массив выравнивается.
None
integer
out=
Если указано, результат будет вставлен в этот массив.
None
array
keepdims=
Если установлено значение True
, уменьшенные оси остаются в результате как размеры одного размера.
<no value>
boolean
Теперь, когда у вас есть твердое понимание дизайна функции NumPy argmin(), давайте начнем изучение ряда примеров.
Как использовать функцию NumPy argmin с одномерным массивом
В своей самой простой форме функция argmin в NumPy может искать по одномерному массиву. В этом случае функция вернет индексную позицию минимального значения в массиве. Давайте посмотрим, как это выглядит:
# Использование функции argmin в NumPy с одномерным массивом чисел
import numpy as np
arr = np.array([10, 7, 4, 11, 12, 6]) # Одномерный массив чисел
print(np.argmin(arr)) # Поиск индекса минимального значения в массиве
# Возвращает:
# 2
Давайте разберем, что делает приведенный выше код:
Мы импортируем numpy с псевдонимом
np
Мы создаем массив
arr
, который содержит шесть уникальных значений.Затем мы выводим результат передачи нашего массива в функцию
Функция возвращает 2
. Это означает индекс минимального значения в массиве. Поскольку индексация массивов NumPy начинается с нуля, 2
соответствует третьему элементу в списке.
Мы можем затем получить доступ к соответствующему значению этого элемента индекса, индексируя массив, как показано ниже:
# Доступ к минимальному значению в NumPy-массиве при помощи argmin()
import numpy as np
arr = np.array([10, 7, 4, 11, 12, 6]) # Одномерный массив чисел
min_idx = np.argmin(arr) # Поиск индекса минимального значения в массиве
print(arr[min_idx]) # Вывод минимального значения по найденному индексу
# Возвращает:
# 4
В следующем разделе вы научитесь использовать функцию np.argmin()
с двумерными массивами.
Как использовать функцию NumPy argmin с двумерными массивами
Функция argmin из библиотеки NumPy также может использоваться с двумерными массивами. При работе с двумя и более измерениями, функция предоставляет различный функционал для возвращения индексов минимальных значений.
Давайте посмотрим, что произойдет, когда мы передадим двумерный массив в функцию np.argmin()
# Использование np.argmin() с многомерными массивами при использовании default-значений аргументов
import numpy as np
arr = np.array([
[3, 7, 1, 2],
[9, 3, 5, 1],
[0, 1, 6, 4]
]) # Многомерный массив чисел
print(np.argmin(arr)) # Поиск индекса минимального значения в многомерном массиве (по умолчанию - по строкам)
# Возвращает:
# 8
В приведенном выше блоке кода мы загрузили двумерный массив в функцию np.argmin()
. Функция вернула одну позицию индекса. Этот результат может вас удивить! Давайте исследуем, почему это происходит.
По умолчанию функция np.argmin()
будет использовать axis=None
в качестве аргумента по умолчанию. Поскольку ось не указана, NumPy вернет индекс одномерной версии массива. Это означает, что, по умолчанию, NumPy преобразует массив в одномерный и найдет индекс минимального значения.
В следующих двух разделах вы узнаете, как настроить его поведение, чтобы получать индексы минимальных значений по строкам и по столбцам.
Нахождение индекса минимального значения по строкам с помощью NumPy argmin
Мы можем использовать параметр axis=
функции np.argmin()
для настройки как NumPy ищет минимальные значения. Используя axis=1
, мы указываем NumPy искать минимальное значение в каждой «строке» массива. Давайте посмотрим, как это выглядит:
# Поиск индекса минимального значения строк-wise при помощи np.argmin()
import numpy as np
arr = np.array([
[3, 7, 1, 2],
[9, 3, 5, 1],
[0, 1, 6, 4]
]) # Многомерный массив чисел
print(np.argmin(arr, axis=1)) # Поиск индекса минимального значения в каждой строке (axis = 1)
# Возвращает:
# [2 3 0]
В приведенном выше блоке кода возвращается массив из трех разных значений. Это соответствует количеству "строк" в массиве.
Изображение ниже иллюстрирует, как выглядит этот процесс:

В следующем разделе вы узнаете, как функция argmin в NumPy может искать минимальные значения по столбцам.
Нахождение индекса минимального значения по столбцу с помощью NumPy argmin
Изменяя параметр axis=
и установив его значение в 0
, мы можем найти индексы минимальных значений, выполняя поиск по столбцам. Это позволяет нам находить минимальные значения вдоль оси с индексом 0. Давайте посмотрим, как это выглядит:
# Поиск индекса минимального значения столбц-wise при помощи np.argmin()
import numpy as np
arr = np.array([
[3, 7, 1, 2],
[9, 3, 5, 1],
[0, 1, 6, 4]
]) # Многомерный массив чисел
print(np.argmin(arr, axis=0)) # Поиск индекса минимального значения в каждом столбце (axis = 0)
# Возвращает:
# [2 2 0 1]
Мы видим, что функция возвращает массив из четырех значений. Это соответствует количеству значений в каждом из внутренних массивов.
В следующем разделе вы узнаете, как использовать функцию argmin
с Pandas.
Использование аргумента NumPy с Pandas
В этом разделе вы узнаете, как найти строку в DataFrame Pandas с минимальным значением в заданной колонке. Вы также узнаете, как вернуть значение заданной колонки, основываясь на поиске минимального значения в другой колонке.
Поскольку функция np.argmin()
может принимать на вход массивоподобные значения, мы можем передать в неё числовые колонки из Pandas DataFrame Series. Давайте загрузим образцовый DataFrame и найдем индекс минимального значения:
# Использование np.argmin() с Pandas DataFrame
import numpy as np
import pandas as pd
df = pd.DataFrame({
'Name': ['Ник', 'Кейт', 'Эван', 'Кира'],
'Score': [70, 85, 82, 67],
'Location': ['Торонто', 'Нью-Йорк', 'Атланта', 'Сиэтл']}) # Датасет с данными о учащихся
print(np.argmin(df['Score'])) # Поиск индекса минимального значения в столбце со оценками
# Возвращает:
# 3
При передаче в функцию столбца Pandas в виде серии, функция возвращает индекс строки, соответствующей минимальному значению.
Мы можем получить доступ к информации строки, используя акцессор .iloc
. Давайте посмотрим, как это выглядит:
# Доступ к строке со значением минимального значения в другом столбце
import numpy as np
import pandas as pd
df = pd.DataFrame({
'Name': ['Ник', 'Кейт', 'Эван', 'Кира'],
'Score': [70, 85, 82, 67],
'Location': ['Торонто', 'Нью-Йорк', 'Атланта', 'Сиэтл']}) # Датасет с данными о учащихся
min_idx = np.argmin(df['Score']) # Поиск индекса минимального значения в столбце со оценками
print(df.iloc[min_idx]) # Вывод строки со значением минимального значения
# Возвращает:
# Name Кира
# Score 67
# Location Сиэтл
# Name: 3, dtype: object
Наконец, мы также можем получить доступ к значению столбца, основываясь на нахождении минимального значения в другом столбце Pandas. Аналогично, это можно сделать с использованием акцессора .iloc
, как показано ниже:
# Доступ к значению строки со значением минимального значения в другом столбце
import numpy as np
import pandas as pd
df = pd.DataFrame({
'Name': ['Ник', 'Кейт', 'Эван', 'Кира'],
'Score': [70, 85, 82, 67],
'Location': ['Торонто', 'Нью-Йорк', 'Атланта', 'Сиэтл']}) # Датасет с данными о учащихся
min_idx = np.argmin(df['Score']) # Поиск индекса минимального значения в столбце со оценками
print(df.iloc[min_idx, 0]) # Вывод имени студента со значением минимального значения
# Возвращает:
# Кира
В приведенном выше блоке кода мы используем акцессор .iloc
для доступа к значению в 0-м столбце, чтобы получить имя пользователя, у которого был минимальный балл.
Часто задаваемые вопросы
Заключение
В этом учебнике вы научились использовать мощную функцию np.argmin()
. Функция позволяет найти позицию индекса минимального значения в массиве. Сначала вы узнали, как работает функция, поняв ее параметры и аргументы по умолчанию. Затем вы научились использовать функцию с одномерными и многомерными массивами. Наконец, вы научились использовать функцию с фреймами данных Pandas.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь с нижеприведенными руководствами:
NumPy где: обрабатывать элементы массива условно
Last updated