NumPy的去重与重复函数
在数据处理过程中,不可避免地会出现“脏”数据的情况,而重复数据就是“脏”数据的情况之一。在 NumPy 中,可以通过 unique() 函数找出数组中去重后的元素并返回已排序的数组,从而实现去除数组中重复数据的目的。
另外,在统计分析中,经常还会遇到需要将一个数据重复若干次的情况。在 NumPy 中,为了实现数据重复,可使用 tile() 函数和 repeat() 函数。下面将介绍是 NumPy 的去重与重复函数应用。
unique() 函数格式如下:
unique() 函数的示例代码 example1 如下。
tile() 函数的示例代码 example2 如下。
repeat() 函数的示例代码 example3 如下。
tile() 函数和 repeat() 函数的主要区别在于,tile() 函数是对数组进行重复操作,而 repeat() 函数是对数组中的每个元素进行重复操作。
另外,在统计分析中,经常还会遇到需要将一个数据重复若干次的情况。在 NumPy 中,为了实现数据重复,可使用 tile() 函数和 repeat() 函数。下面将介绍是 NumPy 的去重与重复函数应用。
unique() 函数
unique() 函数可以返回输入数组中所有不同的值(即去重后的值),并且按照从小到大的顺序排列。即 unique() 函数能够返回由输入数组中的去重后的值组成的去重数组、去重数组的索引数组、去重数组的下标和去重值的重复数量等结果。unique() 函数格式如下:
numpy.unique(arr,return_index,return_inverse,return_counts)
函数中主要参数说明如下:- 参数 arr 表示输入的数组,如果不是一维数组则会展开;
- return_index 如果为 True,返回输入数组中去重数组的索引数组;
- return_inverse 如果为 True,返回去重数组的下标,它可以用于重构输入数组;
- return_counts 如果为 True,返回去重数组中的元素在原数组中的出现次数。
unique() 函数的示例代码 example1 如下。
# -*- coding: UTF-8 -*- import numpy as np #创建数组arr arr = np.array([3,7,5,6,8,9,7,2,6,2,5,9,10]) print('第1个数组:',arr) print('第1个数组的去重(去重后的值)数组:') arr_u = np.unique(arr) print(arr_u) print('去重数组的索引数组:') u_index = np.unique(arr, return_index=True) print(u_index) print('查看原数组中的元素相对于去重数组中的元素的索引值') print('原数组',arr) print('用去重数组下标标记原数组中元素:') arr_u,u_inverse = np.unique(arr, return_inverse=True) print(u_inverse) print('使用去重数组下标重构原数组:') print(arr_u[u_inverse]) print('返回去重后的值的重复数量:') arr_u,u_inverse = np.unique(arr, return_counts=True) print(u_inverse)
tile() 函数
tile() 函数是模板 numpy.lib.shape_base 中的函数。该函数的作用是将一个已有的数组重复一定的次数。该函数的格式如下:numpy.tile(a,reps)
tile() 函数有 2 个参数,其中,参数a指定重复的数组;参数 reps 指定重复的次数。tile() 函数的示例代码 example2 如下。
# -*- coding: UTF-8 -*- import numpy as np arr = np.array([10,20]) #输出 [10 20 10 20] a = np.tile(arr,2) #输出[[10 20 10 20],[10 20 10 20],[10 20 10 20]] b = np.tile(arr,(3,2)) #输出[[42. 42.],[42. 42.],[42. 42.]] c = np.tile(42.0,(3,2)) print(a,'\n',b,'\n',c)
repeat() 函数
repeat() 函数的格式如下:numpy.repeat(a,repeats,axis=None)
repeat() 函数有 3 个参数,其中,参数 a 指定需要重复的数组元素;参数 repeats 指定重复的次数;参数 axis 指定沿着哪个轴进行重复。repeat() 函数的示例代码 example3 如下。
# -*- coding: UTF-8 -*- import numpy as np a = np.repeat(7.,4) #输出[7. 7. 7. 7.] arr = np.array([10,20]) #定义数组 b = np.repeat(arr,[3,2]) #输出[10 10 10 20 20] arr = np.array([[10,20],[30,40]]) #定义数组 #沿轴 0 重复数据,输出[[10 20],[10 20],[10 20],[30 40],[30 40]] c = np.repeat(arr,[3,2],axis=0) #沿轴 1 重复数据,输出[[10 10 10 20 20],[30 30 30 40 40]] d = arr.repeat([3,2],axis=1) print('数据重复4次', a,'\n元素重复', b,'\n沿轴 0 重复数据', c, "\n 沿轴 1 重复数据", d)
tile() 函数和 repeat() 函数的主要区别在于,tile() 函数是对数组进行重复操作,而 repeat() 函数是对数组中的每个元素进行重复操作。