numpy.unique #

麻木的。unique ( ar , return_index = False , return_inverse = False , return_counts = False , axis = None , * , equal_nan = True ) [来源] #

找出数组中唯一的元素。

返回数组中已排序的唯一元素。除了独特的元素之外,还有三个可选输出:

  • 给出唯一值的输入数组的索引

  • 重建输入数组的唯一数组的索引

  • 每个唯一值在输入数组中出现的次数

参数
ar类似数组

输入数组。除非指定了axis,否则如果它还不是一维的,它将被展平。

return_index布尔值,可选

如果为 True,还返回ar的索引(沿着指定的轴,如果提供的话,或者在展平数组中),这些索引产生唯一的数组。

return_inverse布尔值,可选

如果为 True,还返回可用于重建ar的唯一数组的索引(对于指定轴,如果提供) 。

return_counts布尔值,可选

如果为 True,还返回每个唯一项在ar中出现的次数。

axis int 或 None,可选

要操作的轴。如果没有,ar将被展平。如果是整数,则由给定轴索引的子数组将被展平并被视为具有给定轴维度的一维数组的元素,请参阅注释以获取更多详细信息。如果使用kwarg ,则不支持对象数组或包含对象的结构化数组。默认值为“无”。

1.13.0 版本中的新增功能。

equal_nan布尔值,可选

如果为 True,则将返回数组中的多个 NaN 值折叠为一个。

1.24 版本中的新增功能。

返回
唯一的ndarray

排序后的唯一值。

unique_indices ndarray,可选

原始数组中唯一值第一次出现的索引。仅当return_index为 True时才提供。

unique_inverse ndarray,可选

从唯一数组重建原始数组的索引。仅当return_inverse为 True时才提供。

unique_counts ndarray,可选

每个唯一值在原始数组中出现的次数。仅当return_counts为 True时才提供。

1.9.0 版本中的新增功能。

也可以看看

numpy.lib.arraysetops

具有许多其他函数的模块,用于对数组执行集合操作。

repeat

重复数组的元素。

笔记

当指定轴时,由轴索引的子数组将被排序。这是通过将指定的轴设为数组的第一个维度(将轴移动到第一个维度以保持其他轴的顺序)然后按 C 顺序展平子数组来完成的。然后,展平的子数组被视为结构化类型,每个元素都有一个标签,结果是我们最终得到一个结构化类型的一维数组,可以像任何其他一维数组一样处理它。结果是展平的子数组从第一个元素开始按字典顺序排序。

例子

>>> 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])

返回二维数组的唯一行

>>> 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='<U1')
>>> indices
array([0, 1, 3])
>>> a[indices]
array(['a', 'b', 'c'], dtype='<U1')

根据唯一值和逆矩阵重建输入数组:

>>> 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