Чтобы получить уникальные значения в массиве, мы можем использовать уникальную функцию (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]
- Синтаксис и параметры
- Случай 1: базовая функция
- Случай 2: с параметром return_index
- Случай 3: с параметром return_inverse
- Случай 4: с параметром return_counts
- Случай 5: значения из строк и столбцов
- Случай 6: без сортировки
- Случай 7: с допуском
Синтаксис и параметры
Функция вызывается следующим образом:
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']
Таким образом, мы можем просто использовать уникальную функцию 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))
Случай 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]
Случай 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]
Случай 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]]
Пример 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]]
Случай 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]
Случай 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 ]