numpy.unique详解

1. 介绍
在数据处理和分析中,经常会遇到需要对数组中的重复元素进行去除的情况。而numpy.unique这个函数就是用来帮助我们实现这个目的的。它能够返回输入数组中的唯一元素,并且能够根据我们的需求对结果进行排序。
2. 语法
numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None)
ar:输入的数组return_index:如果为True,则返回唯一数组中元素的索引位置return_inverse:如果为True,则返回输入数组中重复元素的索引位置return_counts:如果为True,则返回唯一数组中元素的出现次数axis:指定沿着哪一个轴进行操作
3. 实例
接下来我们通过一些实例来演示numpy.unique函数的用法。
3.1 基本使用
首先我们来看一个简单的示例,对一个一维数组进行去重操作:
import numpy as np
arr = np.array([1, 2, 3, 1, 2, 4, 5])
unique_arr = np.unique(arr)
print(unique_arr)
输出为:
[1 2 3 4 5]
3.2 返回索引位置
我们可以通过设置return_index=True参数来获得唯一元素在原数组中的索引位置:
unique_arr, unique_indices = np.unique(arr, return_index=True)
print(unique_arr)
print(unique_indices)
输出为:
[1 2 3 4 5]
[0 1 2 5 6]
3.3 返回重复元素的索引
如果我们希望获取原数组中重复元素的索引位置,可以设置return_inverse=True参数:
unique_arr, inverse_indices = np.unique(arr, return_inverse=True)
print(unique_arr)
print(inverse_indices)
输出为:
[1 2 3 4 5]
[0 1 2 0 1 3 4]
3.4 返回元素出现次数
如果我们想知道唯一元素在原数组中出现的次数,可以设置return_counts=True参数:
unique_arr, counts = np.unique(arr, return_counts=True)
print(unique_arr)
print(counts)
输出为:
[1 2 3 4 5]
[2 2 1 1 1]
4. 高级应用
除了对一维数组的处理,numpy.unique函数还可以用于处理多维数组,并且可以指定沿着哪个轴进行操作。
4.1 对二维数组进行去重
我们可以看一个对二维数组进行去重的示例:
arr = np.array([[1, 2, 3], [1, 2, 4], [1, 3, 5], [1, 2, 3]])
unique_arr = np.unique(arr, axis=0)
print(unique_arr)
输出为:
[[1 2 3]
[1 2 4]
[1 3 5]]
4.2 沿着指定轴返回索引位置
如果我们想获得唯一元素在原数组中的索引位置,可以指定沿着某个轴返回索引位置:
unique_arr, unique_indices = np.unique(arr, axis=0, return_index=True)
print(unique_arr)
print(unique_indices)
输出为:
[[1 2 3]
[1 2 4]
[1 3 5]]
[0 1 2]
5. 总结
通过以上的介绍和实例,我们可以看到numpy.unique函数非常实用且灵活,能够快速帮助我们对数组中的重复元素进行去除。同时,它还支持一些高级的功能,比如返回索引位置、重复元素的索引以及元素的出现次数,可以满足我们在不同情境下的需求。
极客笔记