numpy.
unique
查找数组的唯一元素。
返回数组中已排序的唯一元素。除了独特的元素外,还有三个可选输出:
提供唯一值的输入数组的索引
重建输入数组的唯一数组的索引
输入数组中每个唯一值出现的次数
输入数组。除非 axis 如果已指定,则如果它不是一维的,则将被展平。
如果为真,还返回 ar (沿指定轴,如果提供,或在扁平数组中)生成唯一数组。
如果为真,还返回可用于重建的唯一数组的索引(对于指定的轴,如果提供的话) ar .
如果为真,还返回每个唯一项出现在 ar .
1.9.0 新版功能.
要操作的轴。如果没有, ar 将被压扁。如果是整数,则由给定轴索引的子数组将被展平,并被视为具有给定轴维度的一维数组的元素,有关详细信息,请参见注释。不支持包含对象的对象数组或结构化数组,如果 axis 使用KWAG。默认值为“无”。
1.13.0 新版功能.
排序后的唯一值。
原始数组中第一次出现的唯一值的索引。仅在以下情况下提供 return_index 是True。
从唯一数组重新构造原始数组的索引。仅在以下情况下提供 return_inverse 是True。
每个唯一值在原始数组中出现的次数。仅在以下情况下提供 return_counts 是True。
参见
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