numpy.unique#
- numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None, *, equal_nan=True)[source]#
查找数组的唯一元素。
返回数组的排序唯一元素。除了唯一元素之外,还有三个可选输出
输入数组中给出唯一值的索引
唯一数组的索引,可以用来重建输入数组
每个唯一值在输入数组中出现的次数
- 参数:
- ararray_like
输入数组。除非指定了 axis,否则如果它不是一维的,它将被展平。
- return_indexbool,可选
如果为 True,则还返回 ar 的索引(沿着指定的轴,如果提供,或在展平的数组中),这些索引导致唯一数组。
- return_inversebool,可选
如果为 True,则还返回唯一数组的索引(对于指定的轴,如果提供),这些索引可用于重建 ar。
- return_countsbool,可选
如果为 True,则还返回每个唯一项在 ar 中出现的次数。
- axisint 或 None,可选
要操作的轴。如果为 None,则 ar 将被展平。如果为整数,则由给定轴索引的子数组将被展平并被视为一维数组的元素,其维数为给定轴的维数,有关更多详细信息,请参见说明。如果使用了 axis 关键字参数,则包含对象的数组或结构化数组不受支持。默认值为 None。
版本 1.13.0 中的新功能。
- equal_nanbool,可选
如果为 True,则将返回数组中的多个 NaN 值合并为一个。
版本 1.24 中的新功能。
- 返回值:
- uniquendarray
排序的唯一值。
- unique_indicesndarray,可选
原始数组中唯一值首次出现的索引。仅在 return_index 为 True 时提供。
- unique_inversendarray,可选
从唯一数组重建原始数组的索引。仅在 return_inverse 为 True 时提供。
- unique_countsndarray,可选
每个唯一值在原始数组中出现的次数。仅在 return_counts 为 True 时提供。
版本 1.9.0 中的新功能。
另请参见
repeat
重复数组的元素。
说明
当指定轴时,由轴索引的子数组将被排序。这是通过使指定的轴成为数组的第一维(将轴移到第一维以保持其他轴的顺序),然后按 C 顺序展平子数组来完成的。然后将展平的子数组视为具有标签的结构化类型,其效果是,我们最终得到一个包含结构化类型的 1-D 数组,可以像任何其他 1-D 数组一样处理。结果是,展平的子数组按照从第一个元素开始的字典序排序。
示例
>>> 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])
返回二维数组的唯一行
>>> 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