numpy.unique#
- numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None, *, equal_nan=True)[源代码]#
查找数组的唯一元素.
返回数组的排序唯一元素.除了唯一元素之外,还有三个可选输出:
输入数组的索引,给出唯一值
重建输入数组的唯一数组的索引
输入数组中每个唯一值出现的次数
- 参数:
- ararray_like
输入数组.除非指定了 axis ,否则如果它不是已经 1-D 的,它将被展平.
- return_indexbool, 可选
如果为真,还返回 ar 的索引(沿着指定的轴,如果提供,或在展平的数组中),这些索引结果在唯一数组中.
- return_inversebool, 可选
如果为真,还返回唯一数组的索引(如果提供了指定的轴),这些索引可以用来重建 ar.
- return_countsbool, 可选
如果为真,还返回每个唯一项在 ar 中出现的次数.
- axis整数或无,可选
要操作的轴.如果为 None,`ar` 将被展平.如果是整数,则由给定轴索引的子数组将被展平并视为 1-D 数组的元素,其维度为给定轴,详见注释.如果使用 axis kwarg,则不支持包含对象的对象数组或结构化数组.默认为 None.
在 1.13.0 版本加入.
- equal_nanbool, 可选
如果为真,将返回数组中的多个 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