numpy.unique#

numpy.уникальный(ar, return_index=False, return_inverse=False, return_counts=False, ось=None, *, equal_nan=True, sorted=True)[источник]#

Найти уникальные элементы массива.

Возвращает отсортированные уникальные элементы массива. Есть три дополнительных выходных данных помимо уникальных элементов:

  • индексы входного массива, которые дают уникальные значения

  • индексы уникального массива, которые восстанавливают исходный массив

  • количество раз, которое каждое уникальное значение встречается во входном массиве

Параметры:
ararray_like

Входной массив. Если ось указан, он будет сведен к одномерному массиву, если еще не является таковым.

return_indexbool, необязательно

Если True, также возвращает индексы ar (вдоль указанной оси, если предоставлена, или в сглаженном массиве), которые приводят к уникальному массиву.

return_inversebool, необязательно

Если True, также возвращает индексы уникального массива (для указанной оси, если предоставлена), которые можно использовать для восстановления ar.

return_countsbool, необязательно

Если True, также возвращает количество раз, которое каждый уникальный элемент появляется в ar.

осьint или None, опционально

Ось для операции. Если None, ar будет сглажен. Если целое число, подмассивы, индексированные данной осью, будут сглажены и обработаны как элементы одномерного массива с размерностью данной оси, см. примечания для более подробной информации. Массивы объектов или структурированные массивы, содержащие объекты, не поддерживаются, если ось используется kwarg. По умолчанию — None.

equal_nanbool, необязательно

Если True, объединяет несколько значений NaN в возвращаемом массиве в одно.

Новое в версии 1.24.

sortedbool, необязательно

Если True, уникальные элементы сортируются. Элементы могут быть отсортированы на практике, даже если sorted=False, но это может измениться без предупреждения.

Новое в версии 2.3.

Возвращает:
уникальныйndarray

Отсортированные уникальные значения.

unique_indicesndarray, необязательно

Индексы первых вхождений уникальных значений в исходном массиве. Предоставляется только если return_index равно True.

unique_inversendarray, необязательно

Индексы для восстановления исходного массива из уникального массива. Предоставляется только если return_inverse равно True.

unique_countsndarray, необязательно

Количество раз, которое каждое из уникальных значений встречается в исходном массиве. Предоставляется только если return_counts равно True.

Смотрите также

repeat

Повторить элементы массива.

sort

Возвращает отсортированную копию массива.

Примечания

Когда указана ось, подмассивы, индексируемые по этой оси, сортируются. Это делается путём превращения указанной оси в первое измерение массива (перемещение оси в первое измерение для сохранения порядка других осей), а затем сглаживания подмассивов в порядке C. Сглаженные подмассивы затем рассматриваются как структурированный тип, где каждый элемент получает метку, в результате чего мы получаем одномерный массив структурированных типов, который можно обрабатывать так же, как и любой другой одномерный массив. Результат заключается в том, что сглаженные подмассивы сортируются в лексикографическом порядке, начиная с первого элемента.

Изменено в версии 1.21: Как и в np.sort, NaN будут отсортированы в конце значений. Для комплексных массивов все значения NaN считаются эквивалентными (независимо от того, находится ли NaN в вещественной или мнимой части). В качестве представителя для возвращаемого массива выбирается наименьший в лексикографическом порядке - см. np.sort для определения лексикографического порядка для комплексных массивов.

Изменено в версии 2.0: Для многомерных входных данных, unique_inverse переформируется так, что входные данные могут быть восстановлены с использованием np.take(unique, unique_inverse, axis=axis). Результат теперь не одномерный, когда axis=None.

Обратите внимание, что в NumPy 2.0.0 возвращался также массив более высокой размерности, когда axis не был None. Это было отменено, но inverse.reshape(-1) может использоваться для обеспечения совместимости с обеими версиями.

Примеры

>>> import numpy as np
>>> np.unique([1, 1, 2, 2, 3, 3])
array([1, 2, 3])
>>> a = np.array([[1, 1], [2, 3]])
>>> np.unique(a)
array([1, 2, 3])

Возвращает уникальные строки 2D массива

>>> a = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])
>>> np.unique(a, axis=0)
array([[1, 0, 0], [2, 3, 4]])

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

>>> a = np.array(['a', 'b', 'b', 'c', 'a'])
>>> u, indices = np.unique(a, return_index=True)
>>> u
array(['a', 'b', 'c'], dtype='
>>> indices
array([0, 1, 3])
>>> a[indices]
array(['a', 'b', 'c'], dtype='

Восстановить исходный массив из уникальных значений и обратного:

>>> a = np.array([1, 2, 6, 4, 2, 3, 2])
>>> u, indices = np.unique(a, return_inverse=True)
>>> u
array([1, 2, 3, 4, 6])
>>> indices
array([0, 1, 4, 3, 1, 2, 1])
>>> u[indices]
array([1, 2, 6, 4, 2, 3, 2])

Восстановите входные значения из уникальных значений и счетчиков:

>>> a = np.array([1, 2, 6, 4, 2, 3, 2])
>>> values, counts = np.unique(a, return_counts=True)
>>> values
array([1, 2, 3, 4, 6])
>>> counts
array([1, 3, 1, 1, 1])
>>> np.repeat(values, counts)
array([1, 2, 2, 2, 3, 4, 6])    # original order not preserved