numpy.unique

numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None)[源代码]

查找数组的唯一元素。

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

  • 提供唯一值的输入数组的索引

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

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

参数
ararray_like

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

return_index可选的布尔

如果为真,还返回 ar (沿指定轴,如果提供,或在扁平数组中)生成唯一数组。

return_inverse可选的布尔

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

return_counts可选的布尔

如果为真,还返回每个唯一项出现在 ar .

1.9.0 新版功能.

axisint或none,可选

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

1.13.0 新版功能.

返回
unique恩达雷

排序后的唯一值。

unique_indicesndarray,可选

原始数组中第一次出现的唯一值的索引。仅在以下情况下提供 return_index 是True。

unique_inversendarray,可选

从唯一数组重新构造原始数组的索引。仅在以下情况下提供 return_inverse 是True。

unique_countsndarray,可选

每个唯一值在原始数组中出现的次数。仅在以下情况下提供 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