dask.array.unique

dask.array.unique

dask.array.unique(ar, return_index=False, return_inverse=False, return_counts=False)[源代码]

查找数组中的唯一元素。

此文档字符串是从 numpy.unique 复制的。

Dask 版本可能存在一些不一致性。

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

  • 输入数组的索引,这些索引给出了唯一值

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

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

参数
ararray_like

输入数组。除非指定了 axis ,否则如果它不是已经 1-D 的,它将被展平。

返回索引bool, 可选

如果为 True,还会返回 ar 的索引(沿着指定的轴,如果提供,或者在展平的数组中),这些索引导致唯一的数组。

return_inversebool, 可选

如果为 True,还会返回唯一数组的索引(如果提供了指定的轴),这些索引可以用来重建 ar

return_countsbool, 可选

如果为真,还返回每个唯一项在 ar 中出现的次数。

int 或 None, 可选 (Dask 不支持)

要操作的轴。如果为 None,ar 将被展平。如果为整数,则由给定轴索引的子数组将被展平并视为 1-D 数组的元素,该数组的维度为给定轴的维度,详见注释。如果使用了 axis 参数,则不支持包含对象的对象数组或结构化数组。默认值为 None。

1.13.0 新版功能.

equal_nanbool, 可选 (Dask 不支持)

如果为 True,则将返回数组中的多个 NaN 值合并为一个。

1.24 新版功能.

返回
唯一ndarray

排序后的唯一值。

唯一索引ndarray,可选

原始数组中唯一值首次出现的索引。仅在 return_index 为 True 时提供。

unique_inversendarray,可选

用于从唯一数组重建原始数组的索引。仅在 return_inverse 为 True 时提供。

unique_countsndarray,可选

每个唯一值在原始数组中出现的次数。仅在 return_counts 为 True 时提供。

1.9.0 新版功能.

参见

repeat

重复数组中的元素。

注释

当指定一个轴时,由该轴索引的子数组将被排序。这是通过将指定的轴变为数组的第一维度(移动轴到第一维度以保持其他轴的顺序),然后按C顺序展平子数组来完成的。展平后的子数组被视为具有每个元素标签的结构化类型,其效果是我们最终得到一个可以像任何其他一维数组一样处理的结构化类型的一维数组。结果是展平后的子数组按字典顺序从第一个元素开始排序。

示例

>>> 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