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]])

相关推荐

  1. python数据分析numpy基础unique数组元素

    2024-03-22 02:44:01       23 阅读
  2. python数据分析numpy基础std用法和示例

    2024-03-22 02:44:01       30 阅读
  3. python数据分析numpy基础var求数组方差

    2024-03-22 02:44:01       26 阅读
  4. python_数据分析_numpy

    2024-03-22 02:44:01       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 02:44:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 02:44:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 02:44:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 02:44:01       20 阅读

热门阅读

  1. LeetCode hot100-15

    2024-03-22 02:44:01       18 阅读
  2. python——pytest对于失败的用例重新执行

    2024-03-22 02:44:01       19 阅读
  3. nodejs的中雪花算法(Snowflake)

    2024-03-22 02:44:01       23 阅读
  4. solr functionquery函数查询自定义函数实现

    2024-03-22 02:44:01       23 阅读
  5. 每天学习几道面试题|Kafka(二)架构设计类

    2024-03-22 02:44:01       23 阅读
  6. 美易官方:特斯拉暴跌实是“抄底良机”?

    2024-03-22 02:44:01       20 阅读
  7. Chapter 1 - 2. Introduction to Congestion in Storage Networks

    2024-03-22 02:44:01       18 阅读
  8. mysql日志( Redo Log 、Undo Log、Bin Log)

    2024-03-22 02:44:01       19 阅读