Чтобы получить уникальные значения в массиве, мы можем использовать уникальную функцию (unique) NumPy в Python. Его основное использование возвращает отсортированные уникальные значения, но такие параметры, как return_index, return_inverse и return_counts, предоставляют индексы, обратные индексы и количество уникальных элементов соответственно.

Для несортированных результатов объедините unique с data[np.sort(idx)]. Чтобы обработать допуск, предварительно обработайте массив с помощью np.round до желаемой точности, прежде чем применять уникальные значения, эффективно группируя близкие значения как идентичные.

Уникальная функция NumPy в Python используется для поиска уникальных элементов массива. Он возвращает отсортированные уникальные элементы массива, предоставляя возможность возвращать индексы, количество раз появления каждого уникального элемента и обратный индекс.

Пример. Давайте возьмем массив и попробуем получить уникальные значения, используя уникальную функцию NumPy в Python.

import numpy as np
arr = np.array([1, 2, 2, 3, 3, 3, 4])
unique_elements = np.unique(arr)
print('The unique values of the input array is:\n', unique_elements)

Вывод: здесь простая функция np.unique() в Python вернет все уникальные значения из входного массива.

The unique values of the input array is:
 [1 2 3 4]

Уникальная функция NumPy в Python

Содержание

Синтаксис и параметры

Функция вызывается следующим образом:

numpy.unique(arr, return_index=False, return_inverse=False, return_counts=False, axis=None)

Здесь,

Имя Описание
arr. Входной массив в Python.
return_index Если True, возвращает индексы входного массива, которые дают уникальные значения.
return_inverse Если True, возвращает индексы уникального массива, который может восстановить входной массив.
return_counts Если True, возвращает количество раз, когда каждый уникальный элемент появляется во входном массиве.
axis Целое число, позволяющее найти уникальные строки или столбцы. По умолчанию входной массив сглажен.

Могут быть разные варианты использования, если мы предоставим разные параметры в уникальной функции NumPy в Python. Давайте посмотрим на них один за другим.

Случай 1: базовая функция

Он находит и возвращает уникальные элементы из массива в Python.

Пример: представьте, что у нас есть массив в Python и мы хотим фильтровать из него только уникальные значения с помощью функции np.unique().

import numpy as np

states = np.array(['California', 'Texas', 'New York', 'California', 'Texas'])
unique_states = np.unique(states)
print('The unique states in the input array are:\n', unique_states)

Вывод: это вернет уникальные значения из массива в Python.

The unique states in the input array are:
 ['California' 'New York' 'Texas']

Случай 1: базовая функция 

Таким образом, мы можем просто использовать уникальную функцию NumPy в Python.

Случай 2: с параметром return_index

numpy.unique с параметром return_index предоставляет уникальные элементы и индексы их первого появления в массиве NumPy.

import numpy as np

cities = np.array(["New York", "Los Angeles", "Chicago", "New York", "Los Angeles"])
unique_cities = np.unique(cities, return_index=True)
print('The unique cities in the input array are:\n', unique_cities)

Вывод:

The unique cities in the input array are:
(array(['Chicago', 'Los Angeles', 'New York'], dtype='<U11'), array([2, 1, 0], dtype=int64))

Случай 2: с параметром return_index

Случай 3: с параметром return_inverse

Функция np.unique() с параметром return_inverse возвращает уникальные элементы и индексы для восстановления arr на основе этих уникальных элементов.

import numpy as np

presidents = np.array(["Washington", "Jefferson", "Lincoln", "Roosevelt", "Roosevelt"])
unique_presidents_names, inverse_indices = np.unique(presidents, return_inverse=True)
print('The unique presidents names in the input array are:\n', unique_presidents_names)
print('The indices where the names are repeated: ', inverse_indices)

Вывод:

The unique presidents names in the input array are:
 ['Jefferson' 'Lincoln' 'Roosevelt' 'Washington']
The indices where the names are repeated:  [3 0 1 2 2]

Случай 3: с параметром return_inverse

Случай 4: с параметром return_counts

Функция np.unique() с параметром return_counts предоставляет уникальные элементы и количество их вхождений в массив Python.

import numpy as np

car_brands = np.array(['Ford', 'Toyota', 'Ford', 'Honda', 'Toyota', 'Honda'])
unique_brands, counts = np.unique(car_brands, return_counts=True)
print('The unique brands names in the input array are:\n', unique_brands)
print('The number of times names are repeated are: ', counts)

Вывод:

The unique brands names in the input array are:
 ['Ford' 'Honda' 'Toyota']
The number of times names are repeated are:  [2 2 2]

Случай 4: с параметром return_counts

Случай 5: значения из строк и столбцов

Параметр np.unique() с осью идентифицирует уникальные строки(или столбцы, если ось = 1) в двумерном массиве Python.

Пример 1. Здесь мы будем использовать параметр оси, которому присвоено значение 0, чтобы получать только уникальные строки.

import numpy as np

demographic_data = np.array([[30, 55000], [40, 65000], [30, 55000], [40, 70000]])
unique_demographics = np.unique(demographic_data, axis=0)
print('The unique demographics data in the input array are:\n', unique_demographics)

Вывод:

The unique demographics data in the input array are:
 [[   30 55000]
 [   40 65000]
 [   40 70000]]

Случай 5: значения из строк и столбцов 

Пример 2. Здесь мы будем использовать параметр оси, которому присвоено значение 1, чтобы получить только уникальные столбцы.

import numpy as np

sales_data = np.array([
    [1200, 1500, 1200],  # Month 1
    [1300, 1500, 1300],  # Month 2
    [1250, 1600, 1250]   # Month 3
])

unique_sales_columns = np.unique(sales_data, axis=1)
print(unique_sales_columns)

Вывод:

[[1200 1500]
 [1300 1500]
 [1250 1600]]

Случай 5: значения из строк и столбцов 

Случай 6: без сортировки

По состоянию на последнее обновление в апреле 2023 года функция numpy.unique в Python не предоставляет встроенной возможности возвращать уникальные элементы без их сортировки. Однако мы можем получить несортированный уникальный список, используя комбинацию других функций NumPy и конструкций Python.

import numpy as np

data = np.array([20, 10, 50, 10, 30, 20, 40])
_, idx = np.unique(data, return_index=True)
unique_without_sort = data[np.sort(idx)]
print(unique_without_sort)

Вывод: здесь data[np.sort(idx)] извлекает элементы из исходного массива в порядке их первого появления, в результате чего получаются уникальные элементы без их сортировки по их значению через Python.

[20 10 50 30 40]

Случай 6: без сортировки

Случай 7: с допуском

Уникальная функция NumPy в Python с допуском достигается путем округления элементов массива до указанного количества десятичных знаков перед применением np.unique, обрабатывая значения как одинаковые, если они округляются до одного и того же числа.

import numpy as np

measurements = np.array([1.01, 1.02, 1.003, 1.0004, 2.1, 2.05, 2.095])
tolerance = 2
rounded_measurements = np.round(measurements, decimals=tolerance)
unique_measurements = np.unique(rounded_measurements)

print(unique_measurements)

Вывод:

[1.   1.01 1.02 2.05 2.1 ]

Случай 7: с допуском

Добавить комментарий