上一主题

numpy.trim_zeros

numpy.unique

numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False)[source]

查找数组的唯一元素。

返回数组的排序的唯一元素。除了唯一元素外,还有三个可选输出:提供唯一值的输入数组的索引,重建输入数组的唯一数组的索引,以及输入数组中每个唯一值的出现次数。

参数:

ar:array_like

输入数组。如果它不是1-D,它将被展平。

return_index:bool,可选

如果为True,还返回导致唯一数组的ar的索引。

return_inverse:bool,可选

如果为True,还返回可用于重构ar的唯一数组的索引。

return_counts:bool,可选

如果为True,还返回ar中每个唯一值的出现次数。

版本1.9.0中的新功能。

返回:

unique:ndarray

排序的唯一值。

unique_indices:ndarray,可选

(扁平)原数组中唯一值的第一次出现的索引。仅当return_index为True时提供。

unique_inverse:ndarray,可选

从唯一数组重建(扁平化)原数组的索引。仅在return_inverse为True时提供。

unique_counts:ndarray,可选

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

版本1.9.0中的新功能。

也可以看看

numpy.lib.arraysetops
具有用于对数组执行设置操作的多个其他功能的模块。

例子

>>> 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(['a', 'b', 'b', 'c', 'a'])
>>> u, indices = np.unique(a, return_index=True)
>>> u
array(['a', 'b', 'c'],
       dtype='|S1')
>>> indices
array([0, 1, 3])
>>> a[indices]
array(['a', 'b', 'c'],
       dtype='|S1')

从唯一值重新构建输入数组:

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