numpy.unique
numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None) [source]
查找数组的唯一(unique)元素。
返回数组的排序后的唯一元素。 除独特元素外,还有三个可选输出:
- 输入数组的索引,这些索引给出唯一值
- 重建输入数组的唯一数组的索引
- 输入数组中每个唯一值出现的次数
参数 : | ar :array_like 输入数组。 除非指定了轴,否则如果它不是一维的, 它将被展平。 return_index :bool, 可选 如果为True,则还返回ar的索引(沿着指定的轴, 如果提供的话,或者在展平的数组中), 这将导致唯一的数组。 return_inverse : 如果为True,则还返回可用于重建ar的唯一数组 (对于指定的轴,如果提供)的索引。 return_counts :bool, 可选 如果为True,则还返回每个唯一项出现在ar中的次数。 1.9.0版中的新功能。 axis : 要运行的轴。 如果为 如果为整数,则由给定轴索引的子数组将被展平, 并视为具有给定轴尺寸的一维数组的元素, 有关更多详细信息,请参见注释。 如果使用轴kwarg, 则不支持对象数组或包含对象的结构化数组。 默认为无。 1.13.0版中的新功能。 |
返回值 : | unique : 排序后的唯一值。 unique_indices : 原始数组中唯一值的首次出现的索引。 仅在return_index为True时提供。 unique_inverse : 从唯一数组重建原始数组的索引。 仅在return_inverse为True时提供。 unique_counts : 每个唯一值出现在原始数组中的次数。 仅在return_counts为True时提供。 1.9.0版中的新功能。 |
Notes
指定轴后,将对由该轴索引的子数组进行排序。 通过将指定的轴设为数组的第一维(将轴移至第一维以保持其他轴的顺序),然后将子数组按C顺序展平,即可完成此操作。 然后,将展平的子数组视为结构化类型,并为每个元素指定了标签,结果是我们最终得到了结构化类型的1-D数组,该数组可以用与其他任何1-D数组相同的方式处理。 结果是,展平的子数组从第一个元素开始按字典顺序排序。
例子
>>> 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])