Python 中的 numpy.unique()

2024 年 8 月 29 日 | 4 分钟阅读

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

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

语法

参数

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

a:类似数组

此参数定义包含所需唯一值的元素的源数组。 如果该数组不是一维数组,则将被展平。

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

输出

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

在上面的代码中

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

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

示例 2

输出

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

示例 3

输出

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

输出

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

输出

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

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

输出

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.ndarray.tolist