Python的numpy模块提供了一个用于在numpy数组中查找唯一元素的函数。numpy.unique()函数用于查找数组的唯一元素,并将这些唯一元素返回为一个排序过的数组。除了唯一元素外,还有一些可选的输出,如下所示:

  • 输出可以是给定输入数组中唯一值的索引。
  • 输出可以是重构输入数组的唯一数组的索引。
  • 输出可以是输入数组中每个唯一值出现的次数的数组。

语法

numpy.unique(a, return_index=False, return_inverse=False, return_counts=False, axis=None)  

参数

以下是numpy.mean()函数中的参数:

a: array_like

此参数定义了包含所需唯一值的源数组。如果不是1-D数组,则数组将被展平。

return_index: bool(可选)

如果将此参数设置为True,则函数将返回输入数组的索引(沿指定轴,如果提供,或在展平数组中),这些索引导致唯一数组。

return_inverse: bool(可选)

如果将此参数设置为True,则函数还将返回输入数组的索引(沿指定轴,如果提供,或在展平数组中),可以用来重构输入数组。

return_counts: bool(可选)

如果将此参数设置为True,则函数将返回每个唯一项在输入数组'a'中出现的次数。

axis: int或None(可选)

此参数定义要操作的轴。如果未设置此参数,则数组'a'将被展平。如果此参数是整数,则由给定轴索引的子数组将被展平,并被视为具有给定轴维度的1-D数组的元素。如果使用了轴'kwarg',则不支持包含对象的结构化数组或包含对象的对象数组。

返回值

此函数返回四种类型的输出,如下所示:

unique: ndarray

此输出将显示一个包含排序唯一值的ndarray。

unique_indices: ndarray(可选)

此输出将显示一个包含原始数组中唯一值的第一次出现的索引的ndarray。仅在return_index为True时提供此输出。

unique_inverse: ndarray(可选)

此输出将显示一个包含用于从唯一数组重构原始数组的索引的ndarray。仅在return_inverse为True时提供此输出。

unique_counts: ndarray(可选)

此输出将显示一个包含原始数组中每个唯一值出现次数的ndarray。仅在return_counts为True时提供此输出。

示例1:

import numpy as np  
a=np.unique([1,2,3,4,3,6,2,4])  
a  

输出:

array([1, 2, 3, 4, 6])

在上面的代码中

  • 我们使用别名np导入了numpy。
  • 我们声明了变量'a'并赋值为np.unique()函数的返回值。
  • 我们在函数中传递了一些元素的数量。
  • 最后,我们尝试打印变量'a'的值。

在输出中,显示了一个包含唯一元素的ndarray。

示例2:

a=np.array([[1,2,2,3,9],[1,4,3,5,8]])  
a  
b=np.unique(a)  
b  

输出:

array([[1, 2, 2, 3, 9],
           [1, 4, 3, 5, 8]])
array([1, 2, 3, 4, 5, 8, 9])

示例3:

import numpy as np  
a = np.array([[1, 1, 0], [1, 1, 0], [2, 3, 4],[5, 9, 8],[2, 3, 4]])  
a  
b=np.unique(a, axis=0)  
b  

输出:

array([[1, 1, 0],
           [1, 1, 0],
           [2, 3, 4],
           [5, 9, 8],
           [2, 3, 4]])
array([[1, 1, 0],
           [2, 3, 4],
           [5, 9, 8]])

在上面的代码中

  • 我们使用别名np导入了numpy。
  • 我们创建了一个多维数组'a'。
  • 我们声明了变量'b'并赋值为np.unique()函数的返回值。
  • 我们在函数中传递了多维数组'a'和轴0。
  • 最后,我们尝试打印变量'b'的值。

在输出中,显示了一个包含源数组'a'的唯一行的ndarray。

示例4:

import numpy as np
a = np.array([[1, 1, 0], [1, 1, 0], [2, 2, 4], [5, 5, 8], [2, 2, 4]])
a
b = np.unique(a, axis=1)
b

输出:

array([[1, 1, 0],
       [1, 1, 0],
       [2, 2, 4],
       [5, 5, 8],
       [2, 2, 4]])
array([[0, 1],
       [0, 1],
       [4, 2],
       [8, 5],
       [4, 2]])

注意:当我们将轴设置为1时,此函数将从源数组返回唯一的列。

示例5:使用return_index

import numpy as np  
a = np.array(['d', 'b', 'b', 'z', 'a'])  
result, indices=np.unique(a,return_index=True)  
result  
indices  
a[indices]  

输出:

array(['a', 'b', 'd', 'z'], dtype='|S1')
array([4, 1, 0, 3], dtype=int64)
array(['a', 'b', 'd', 'z'], dtype='|S1')

在上面的代码中

  • 我们使用别名np导入了numpy。
  • 我们创建了一个数组'a'。
  • 我们声明了变量'result'和'indices',并赋值为np.unique()函数的返回值。
  • 我们在函数中传递了数组'a',并将return_index设置为True。
  • 最后,我们尝试打印变量'result'、'indices'以及数组元素,这些元素表示索引('a [indices]')。

在输出中,显示了一个包含原始数组的索引,这些索引给出了唯一值的ndarray。

示例6:使用return_inverse

我们可以通过以下方式从唯一值重构输入数组:

import numpy as np  
a = np.array([1, 2, 6, 4, 5, 3, 2])  
result, indices=np.unique(a,return_inverse=True)  
result  
indices  
a[indices]  

输出:

array([1, 2, 3, 4, 5, 6])
array([0, 1, 5, 3, 4, 2, 1], dtype=int64)
array([1, 2, 3, 4, 5, 6, 2])

标签: NumPy, NumPy教程, NumPy学习, NumPy安装, NumPy入门教程, NumPy进阶教程, NumPy指南, NumPy学习指南, NumPy库, NumPy库学习, NumPy库入门, NumPy库教程, NumPy应用, NumPy库进阶