NumPy argmin(): Получение индекса минимального значения в массивах

В этом учебнике вы научитесь использовать функцию NumPy argmin(), чтобы найти позицию индекса минимального значения в массиве NumPy. Функция np.argmin() предлагает невероятные возможности для работы с одномерными и многомерными массивами. Вы также узнаете, как расширить функциональность до Pandas DataFrames, что позволит вам находить значения в разных столбцах.

Ищете способ найти индекс максимального значения в массиве NumPy? Для этого можно использовать функцию NumPy argmax()

К концу этого руководства вы узнаете:

  • Как использовать функцию np.argmin() для поиска индекса наименьшего значения в массиве NumPy

  • Как работать с одномерными и многомерными массивами для нахождения индекса минимального значения, в том числе при работе с разными осями

  • Как расширить функцию np.argmin() на DataFrames Pandas

Оглавление

Понимание функции NumPy argmin

В этом разделе вы узнаете, как работает функция np.argmin() и какие различные параметры доступны в этой функции. Это может быть важным первым шагом в понимании использования функции. Давайте рассмотрим, из чего состоит функция:

# Understanding the NumPy argmin() Function
import numpy as np
np.argmin(a, axis=None, out=None, 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 может искать по одномерному массиву. В этом случае функция вернет индексную позицию минимального значения в массиве. Давайте посмотрим, как это выглядит:

# Using NumPy argmin() With a One-Dimensional Array
import numpy as np

arr = np.array([10, 7, 4, 11, 12, 6])
print(np.argmin(arr))

# Returns: 2

Давайте разберем, что делает приведенный выше код:

  1. Мы импортируем numpy с псевдонимом np

  2. Мы создаем массив arr, который содержит шесть уникальных значений.

  3. Затем мы выводим результат передачи нашего массива в функцию

Функция возвращает 2. Это означает индекс минимального значения в массиве. Поскольку индексация массивов NumPy начинается с нуля, 2 соответствует третьему элементу в списке.

Мы можем затем получить доступ к соответствующему значению этого элемента индекса, индексируя массив, как показано ниже:

# Accessing the Minimum Value in a NumPy Array Using argmin()
import numpy as np

arr = np.array([10, 7, 4, 11, 12, 6])
min_idx = np.argmin(arr)
print(arr[min_idx])

# Returns: 4

В следующем разделе вы научитесь использовать функцию np.argmin() с двумерными массивами.

Как использовать функцию NumPy argmin с двумерными массивами

Функция argmin из библиотеки NumPy также может использоваться с двумерными массивами. При работе с двумя и более измерениями, функция предоставляет различный функционал для возвращения индексов минимальных значений.

Давайте посмотрим, что произойдет, когда мы передадим двумерный массив в функцию np.argmin()

# Using np.argmin() with Multi-Dimensional Arrays with Default Arguments
import numpy as np

arr = np.array([
    [3, 7, 1, 2],
    [9, 3, 5, 1],
    [0, 1, 6, 4]
])

print(np.argmin(arr))

# Returns: 8

В приведенном выше блоке кода мы загрузили двумерный массив в функцию np.argmin(). Функция вернула одну позицию индекса. Этот результат может вас удивить! Давайте исследуем, почему это происходит.

По умолчанию функция np.argmin() будет использовать axis=None в качестве аргумента по умолчанию. Поскольку ось не указана, NumPy вернет индекс одномерной версии массива. Это означает, что, по умолчанию, NumPy преобразует массив в одномерный и найдет индекс минимального значения.

В следующих двух разделах вы узнаете, как настроить его поведение, чтобы получать индексы минимальных значений по строкам и по столбцам.

Нахождение индекса минимального значения по строкам с помощью NumPy argmin

Мы можем использовать параметр axis= функции np.argmin() для настройки как NumPy ищет минимальные значения. Используя axis=1, мы указываем NumPy искать минимальное значение в каждой «строке» массива. Давайте посмотрим, как это выглядит:

# Finding the Index of the Minimum Value Row-Wise with 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))

# Returns: [2 3 0]

В приведенном выше блоке кода возвращается массив из трех разных значений. Это соответствует количеству "строк" в массиве.

Изображение ниже иллюстрирует, как выглядит этот процесс:

Understanding how the np.argmin() Function Works
Понимание того, как работает функция np.argmin()

В следующем разделе вы узнаете, как функция argmin в NumPy может искать минимальные значения по столбцам.

Нахождение индекса минимального значения по столбцу с помощью NumPy argmin

Изменяя параметр axis= и установив его значение в 0, мы можем найти индексы минимальных значений, выполняя поиск по столбцам. Это позволяет нам находить минимальные значения вдоль оси с индексом 0. Давайте посмотрим, как это выглядит:

# Finding the Index of the Minimum Value Column-Wise with 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))

# Returns: [2 2 0 1]

Мы видим, что функция возвращает массив из четырех значений. Это соответствует количеству значений в каждом из внутренних массивов.

В следующем разделе вы узнаете, как использовать функцию argmin с Pandas.

Использование аргумента NumPy с Pandas

В этом разделе вы узнаете, как найти строку в DataFrame Pandas с минимальным значением в заданной колонке. Вы также узнаете, как вернуть значение заданной колонки, основываясь на поиске минимального значения в другой колонке.

Поскольку функция np.argmin() может принимать на вход массивоподобные значения, мы можем передать в неё числовые колонки из Pandas DataFrame Series. Давайте загрузим образцовый DataFrame и найдем индекс минимального значения:

# Using np.argmin() with a Pandas DataFrame
import numpy as np
import pandas as pd

df = pd.DataFrame({
    'Name': ['Nik', 'Kate', 'Evan', 'Kyra'],
    'Score': [70, 85, 82, 67],
    'Location': ['Toronto', 'New York', 'Atlanta', 'Seattle']})

print(np.argmin(df['Score']))

# Returns: 3

При передаче в функцию столбца Pandas в виде серии, функция возвращает индекс строки, соответствующей минимальному значению.

Мы можем получить доступ к информации строки, используя акцессор .iloc. Давайте посмотрим, как это выглядит:

# Accessing the Row with the Minimum Value in Another Column
import numpy as np
import pandas as pd

df = pd.DataFrame({
    'Name': ['Nik', 'Kate', 'Evan', 'Kyra'],
    'Score': [70, 85, 82, 67],
    'Location': ['Toronto', 'New York', 'Atlanta', 'Seattle']})

min_idx = np.argmin(df['Score'])
print(df.iloc[min_idx])

# Returns: 
# Name           Kyra
# Score            67
# Location    Seattle
# Name: 3, dtype: object

Наконец, мы также можем получить доступ к значению столбца, основываясь на нахождении минимального значения в другом столбце Pandas. Аналогично, это можно сделать с использованием акцессора .iloc, как показано ниже:

# Accessing a Value with the Minimum Value in Another Column
import numpy as np
import pandas as pd

df = pd.DataFrame({
    'Name': ['Nik', 'Kate', 'Evan', 'Kyra'],
    'Score': [70, 85, 82, 67],
    'Location': ['Toronto', 'New York', 'Atlanta', 'Seattle']})

min_idx = np.argmin(df['Score'])
print(df.iloc[min_idx, 0])

# Returns: Kyra

В приведенном выше блоке кода мы используем акцессор .iloc для доступа к значению в 0-м столбце, чтобы получить имя пользователя, у которого был минимальный балл.

Часто задаваемые вопросы

Как NumPy argmin обрабатывает несколько минимальных значений?

При нахождении нескольких минимальных значений в массиве NumPy возвращается индекс только первого минимального значения.

Как NumPy argmin обрабатывает пропущенные значения?

По умолчанию NumPy обрабатывает пропущенные значения как минимальные. Для того, чтобы игнорировать пропущенные значения, можно использовать функцию np.nanargmin(), которая позволяет игнорировать пропущенные значения.

Заключение

В этом учебнике вы научились использовать мощную функцию np.argmin(). Функция позволяет найти позицию индекса минимального значения в массиве. Сначала вы узнали, как работает функция, поняв ее параметры и аргументы по умолчанию. Затем вы научились использовать функцию с одномерными и многомерными массивами. Наконец, вы научились использовать функцию с фреймами данных Pandas.

Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с нижеприведенными руководствами:

Last updated