numpy.unique函数是numpy库中一个非常实用的函数。本文将从不同的维度,对numpy.unique函数做详细的阐述。
一、函数概述
numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None)
numpy.unique函数用于去除数组中的重复元素,返回一个新的没有重复元素的数组。该函数的具体参数解释如下:
- ar: 输入的数组
- return_index: 如果为True,则返回新列表中元素在旧列表中的位置(下标)。
- return_inverse: 如果为True,则返回旧列表中元素在新列表中的位置(下标)。
- return_counts: 如果为True,则每个唯一值的出现次数。
- axis: 坐标轴
二、去重操作
numpy.unique函数最基本的用途就是去重。以下是去重操作的示例代码:
import numpy as np
a = np.array([1, 2, 3, 1, 2, 3, 4, 5])
print(np.unique(a))
运行结果:
[1 2 3 4 5]
在上述代码中,输入的数组是a,函数np.unique(a)将返回一个新的没有重复元素的数组,即[1,2,3,4,5]。
三、返回下标
有时候,我们需要得到去重后的数组元素在原数组中的下标。这时,我们可以使用return_index为True的方式,下面是一个示例:
import numpy as np
a = np.array([1, 2, 3, 1, 2, 3, 4, 5])
u, index = np.unique(a, return_index=True)
print(u)
print(index)
运行结果为:
[1 2 3 4 5]
[0 1 2 6 7]
其中,np.unique(a, return_index=True)返回去重后的数组及对应的下标,u为去重后的数组,index为对应的下标。
四、返回下标的逆序
有时候,我们需要得到原数组中的元素在去重后的数组的下标。这时,我们可以使用return_inverse为True的方式,下面是一个示例:
import numpy as np
a = np.array([1, 2, 3, 1, 2, 3, 4, 5])
u, index = np.unique(a, return_inverse=True)
print(u)
print(index)
运行结果为:
[1 2 3 4 5]
[0 1 2 0 1 2 3 4]
其中,np.unique(a, return_inverse=True)返回去重后的数组及原数组中元素在去重数组中的下标,u为去重后的数组,index为原数组中元素在去重数组中的下标。
五、返回每个元素出现次数
有时候,我们需要知道每个元素在原数组中出现的次数,这时我们可以使用return_counts为True的方式,下面是一个示例:
import numpy as np
a = np.array([1, 2, 3, 1, 2, 3, 4, 5])
u, count = np.unique(a, return_counts=True)
print(u)
print(count)
运行结果为:
[1 2 3 4 5]
[2 2 2 1 1]
其中,np.unique(a, return_counts=True)返回去重后的数组及每个元素在原数组中出现的次数,u为去重后的数组,count为每个元素在原数组中出现的次数。
六、在二维数组中去重
除了一维数组,numpy.unique函数也可以用于二维数组去重。下面是一个示例:
import numpy as np
a = np.array([[1, 2], [3, 4], [1, 2]])
print(np.unique(a, axis=0))
运行结果为:
[[1 2]
[3 4]]
其中,np.unique(a, axis=0)表示对二维数组在第0轴(即行)进行去重,返回不包含重复行的数组。
七、多个数组去重
如果要对多个数组进行去重,我们可以使用numpy库中的intersect1d函数。下面是一个示例:
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([3, 4, 5, 6, 7])
c = np.array([5, 6, 7, 8, 9])
print(np.intersect1d(a, b, c))
运行结果为:
[5]
其中,np.intersect1d(a, b, c)表示对a, b, c三个数组进行去重,返回所有三个数组中共有的元素。
八、数组合并并去重
有时候,我们需要对多个数组进行合并并去重,这时我们可以使用numpy库中的union1d函数。下面是一个示例:
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array([3, 4, 5, 6, 7])
c = np.array([5, 6, 7, 8, 9])
print(np.union1d(a, b, c))
运行结果为:
[1 2 3 4 5 6 7 8 9]
其中,np.union1d(a, b, c)表示将a, b, c三个数组合并并去重,返回合并后的数组。
总结
通过上述对numpy.unique函数的细致讲解,相信读者已经对numpy.unique函数有了全面的认识。numpy.unique函数用途广泛,可以用于一、二维数组的去重,也可以用于多个数组的合并与去重,而且还可以返回元素所在数组的下标以及出现次数等信息,非常方便实用。在实际编程中,读者可以根据具体需要,在numpy.unique函数的基础上,进一步扩展应用。