NumPy numpy.unique()的使用
Python的numpy模块提供了一个用于查找numpy数组中唯一元素的函数。numpy.unique()函数找到数组的唯一元素,并将这些唯一元素作为排序后的数组返回。除了唯一元素之外,还有一些可选的输出,如下所示:
- 输出可以是给出唯一值的输入数组的索引
- 输出可以是重构输入数组的唯一数组的索引
- 输出可以是输入数组中每个唯一值出现的次数的数组。
语法
numpy.unique(a, return_index=False, return_inverse=False, return_counts=False, axis=None)
参数
numpy.mean()函数有以下参数:
a: array_like
此参数定义了包含所需唯一值的元素的源数组。如果数组不是一维数组,则会被扁平化。
Return_index: bool(optional)
如果设置为True,函数将返回输入数组的索引(在指定的轴上(如果提供)或在扁平化的数组中),这将导致唯一数组。
return_inverse: bool(optional)
如果设置为True,函数还将返回输入数组的索引(在指定的轴上(如果提供)或在扁平化的数组中),这些索引可用于重构输入数组。
Return_counts: bool(optional)
如果设置为True,函数将返回输入数组’a’中每个唯一项出现的次数。
axis: int or None(optional)
此参数定义要操作的轴。如果未设置此参数,则数组’a’将被扁平化。如果此参数是整数,则由给定轴索引的子数组将被扁平化,并被视为具有给定轴维度的一维数组的元素。如果使用’kwarg’轴,则不支持包含对象的结构化数组或对象数组。
返回值
此函数返回以下四种类型的输出:
unique: ndarray
在此输出中,将显示一个包含已排序唯一值的ndarray。
unique_indices: ndarray(optional)
在此输出中,将显示一个包含原始数组中唯一值的第一次出现的索引的ndarray。仅当return_index为True时才提供此输出。
unique_inverse: ndarray(optional)
在此输出中,将显示一个包含重构原始数组的唯一数组的索引的ndarray。仅当return_inverse为True时才提供此输出。
unique_counts: ndarray(optional)
在此输出中,将显示每个唯一值在原始数组中出现的次数的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])