python数据分析numpy基础之unique对数组元素去重

1 python数据分析numpy基础之unique对数组元素去重

python的numpy库的unique()函数,用于查找数组的唯一元素,即对数组元素去重,重复的元素只保留一个,并返回排序后的数组。

用法

numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None, *, equal_nan=True)

描述

numpy.unique()返回沿指定轴去重后的数组。

入参

a:必选,需要去重的数组或元组或列表。

return_index:可选,bool,表示是否返回去重后元素在原始数组第1次出现的索引;

return_inverse:可选,bool,表示是否返回原始数组元素在去重后数组中的索引;

return_counts:可选,bool,表示是否返回去重后元素在原始数组中出现的次数;

axis:可选,整数,指定要排序的轴,默认为-1,沿最后一个轴排序。如果为None,则转为一维数组进行排序。

1.1 入参a

numpy.unique()的入参a,为必选入参,可以为数组、列表、元组。

>>> import numpy as np
# unique()返回元素去重后有序的数组
# 入参a为列表
>>> np.unique([6,6,5,5,8,8])
array([5, 6, 8])
# 入参a为元组
>>> np.unique((6,6,5,5,8,8))
array([5, 6, 8])
# 入参a为数组
>>> np.unique(np.array((6,6,5,5,8,8)))
array([5, 6, 8])

1.2 入参return_index

numpy.unique()的入参return_index,为可选入参,为bool值,表示是否返回元素在未去重数组中的索引。默认为False,不返回元素索引,否则返回元素在原始数组(未去重的数组)第1次出现的索引。

>>> import numpy as np
# return_index=True,返回元素在原始数组第1次出现的索引
>>> ar1=np.array(['a','r','r','a','y'])
>>> ue,eid=np.unique(ar1,return_index=True)
>>> ue
array(['a', 'r', 'y'], dtype='<U1')
>>> eid
array([0, 1, 4], dtype=int64)
# 通过索引获取值
>>> ar1[eid]
array(['a', 'r', 'y'], dtype='<U1')
# return_index=False,不返回索引
>>> np.unique(ar1,return_index=False)
array(['a', 'r', 'y'], dtype='<U1')

1.3 入参return_inverse

numpy.unique()的入参return_inverse,为可选入参,为bool值,表示是否返回元素在去重后的数组中的索引。默认为False,不返回元素索引,否则返回元素在去重且排序后的数组中的索引。通过此索引可以重建去重前数组。

>>> import numpy as np
# return_inverse=True,返回ar1元素在去重后数组的索引位置
>>> ar1=np.array(['a','r','r','a','y'])
>>> ue,eid=np.unique(ar1,return_inverse=True)
>>> ue
array(['a', 'r', 'y'], dtype='<U1')
>>> eid
array([0, 1, 1, 0, 2], dtype=int64)
# 通过去重后索引位置重构去重前数组
>>> ar1[eid]
array(['a', 'r', 'r', 'a', 'r'], dtype='<U1')

1.4 入参return_counts

numpy.unique()的入参return_counts,为可选入参,为bool值,表示是否返回去重后的元素在原始数组中出现的次数。默认为False,不返回元素次数,True则返回元素次数。

>>> import numpy as np
# return_counts=True,返回去重且排序后的元素在原始数组出现的次数
>>> ar1=np.array(['a','r','r','a','y'])
>>> vs,cs=np.unique(ar1,return_counts=True)
>>> vs
array(['a', 'r', 'y'], dtype='<U1')
>>> cs
array([2, 2, 1], dtype=int64)
>>> np.repeat(vs,cs)# 与去重后数组相同顺序
array(['a', 'a', 'r', 'r', 'y'], dtype='<U1')

1.5 入参axis

numpy.unique()的入参axis为可选入参,只能为整数(不支持元组),范围[0, ndim)。axis=None,则多维数组则转换为一维数组后进行去重。

若axis=n为整数,则沿指定轴n去重。

若axis=负数,则-1对应最后一个轴,-2倒数第2个轴,依此类推。

>>> import numpy as np
# return_counts=True,返回去重且排序后的元素在原始数组出现的次数
>>> ar2=np.array([[2,0,0],[2,0,0],[3,5,8]])
>>> ar2
array([[2, 0, 0],
       [2, 0, 0],
       [3, 5, 8]])
# axis=None,多维数组转一维数组后去重
>>> np.unique(ar2)
array([0, 2, 3, 5, 8])
# axis=0沿0轴去重
>>> np.unique(ar2,axis=0)
array([[2, 0, 0],
       [3, 5, 8]])
# axis=1沿1轴去重,保留去重后元素最多的结构
>>> np.unique(ar2,axis=1)
array([[0, 0, 2],
       [0, 0, 2],
       [5, 8, 3]])
# 若axis=负数,则-1对应最后一个轴,-2倒数第2个轴,依此类推。
>>> np.unique(ar2,axis=-1)
array([[0, 0, 2],
       [0, 0, 2],
       [5, 8, 3]])
>>> ar2_1=np.array([[2,0,0],[2,0,0],[3,5,5]])
>>> np.unique(ar2_1,axis=1)
array([[0, 2],
       [0, 2],
       [5, 3]])
>>> ar2_1
array([[2, 0, 0],
       [2, 0, 0],
       [3, 5, 5]])
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值