numpy.unique 是 NumPy 中用于找出数组中唯一元素的函数,它还能返回唯一元素的索引和出现次数。可以用于数据去重并排序,计算数据频率(配合 return_counts=True),还可以找出数据映射关系(return_inverse=True),处理多维数组的唯一值本文。主要介绍一下NumPy中unique方法的使用。

numpy.unique

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

查找数组的唯一(unique)元素。

返回数组的排序后的唯一元素。 除独特元素外,还有三个可选输出:

  • 输入数组的索引,这些索引给出唯一值
  • 重建输入数组的唯一数组的索引
  • 输入数组中每个唯一值出现的次数

参数 :

ar :array_like

输入数组。 除非指定了轴,否则如果它不是一维的,

它将被展平。

return_indexbool, 可选

如果为True,则还返回ar的索引(沿着指定的轴,

如果提供的话,或者在展平的数组中),

这将导致唯一的数组。

return_inversebool, 可选

如果为True,则还返回可用于重建ar的唯一数组

(对于指定的轴,如果提供)的索引。

return_counts :bool, 可选

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

1.9.0版中的新功能。

axisintNone, 可选

要运行的轴。 如果为None,则ar将被展平。 

如果为整数,则由给定轴索引的子数组将被展平,

并视为具有给定轴尺寸的一维数组的元素,

有关更多详细信息,请参见注释。

 如果使用轴kwarg

则不支持对象数组或包含对象的结构化数组。

 默认为None。 

1.13.0版中的新功能。

返回值 :

uniquendarray

排序后的唯一值。

unique_indicesndarray, 可选

原始数组中唯一值的首次出现的索引。 

仅在return_index为True时提供。

unique_inversendarray, 可选

从唯一数组重建原始数组的索引。 

仅在return_inverseTrue时提供。

unique_countsndarray, 可选

每个唯一值出现在原始数组中的次数。

 仅在return_countsTrue时提供。

 1.9.0版中的新功能。

Notes

指定轴后,将对由该轴索引的子数组进行排序。 通过将指定的轴设为数组的第一维(将轴移至第一维以保持其他轴的顺序),然后将子数组按C顺序展平,即可完成此操作。 然后,将展平的子数组视为结构化类型,并为每个元素指定了标签,结果是我们最终得到了结构化类型的1-D数组,该数组可以用与其他任何1-D数组相同的方式处理。 结果是,展平的子数组从第一个元素开始按字典顺序排序。

例子

1)基本去重

import numpy as np

arr = np.array([1, 1, 2, 2, 3, 3])
unique_values = np.unique(arr)
print(unique_values)

2)获取二维数组的唯一元素

import numpy as np

a = np.array([[1, 1], [2, 3]])
unique_values = np.unique(a)
print(unique_values)

3)获取二维数组的唯一行

import numpy as np

a = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])
unique_rows = np.unique(a, axis=0)
print(unique_rows)

4)获取唯一值的原始索引

import numpy as np

a = np.array(['a', 'b', 'b', 'c', 'a'])
unique_values, indices = np.unique(a, return_index=True)

print(unique_values)  # ['a' 'b' 'c']
print(indices)        # [0 1 3]
print(a[indices])     # ['a' 'b' 'c']

5)从唯一值重建输入数组

import numpy as np

a = np.array([1, 2, 6, 4, 2, 3, 2])
unique_values, inverse_indices = np.unique(a, return_inverse=True)

print(unique_values)       # [1 2 3 4 6]
print(inverse_indices)     # [0 1 4 3 1 2 1]
print(unique_values[inverse_indices])  # [1 2 6 4 2 3 2]

推荐文档

相关文档

大家感兴趣的内容

随机列表