当前位置: 首页 > news >正文

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

相关文章:

  • 测开面经学习笔记
  • ruoyi-vue插件集成websocket
  • linux上安装fastdfs及配置
  • html5cssjs代码 002 50以内的加法算式
  • 【kotlin】在SpringBoot项目中使用kotlin协程coroutine实现方法的异步延迟调用,例如延迟查询短信发送详情结果。
  • H5 宠物店官网源码
  • 1054:三角形判断
  • Docker常见指令
  • 重塑语言智能未来:掌握Transformer,驱动AI与NLP创新实战
  • 进线程学习--01
  • 【wine】WINEDEBUG 分析mame模拟器不能加载roms下面的游戏 可以调整参数,快速启动其中一个游戏kof98
  • MySQL:概念简章
  • 从顺序表到链表再到队列和栈
  • 知识碎片收集
  • 【Redis笔记】基于Redis的Stream结构作为消息队列,实现异步任务
  • 4. 路由到控制器 - Laravel从零开始教程
  • Brief introduction of how to 'Call, Apply and Bind'
  • docker python 配置
  • extjs4学习之配置
  • LeetCode算法系列_0891_子序列宽度之和
  • mysql 5.6 原生Online DDL解析
  • MySQL数据库运维之数据恢复
  • php的插入排序,通过双层for循环
  • Python学习之路16-使用API
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 从零开始在ubuntu上搭建node开发环境
  • 码农张的Bug人生 - 见面之礼
  • 前端临床手札——文件上传
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • elasticsearch-head插件安装
  • $L^p$ 调和函数恒为零
  • (¥1011)-(一千零一拾一元整)输出
  • (1)(1.13) SiK无线电高级配置(五)
  • (C语言)逆序输出字符串
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (八)c52学习之旅-中断实验
  • (八十八)VFL语言初步 - 实现布局
  • (初研) Sentence-embedding fine-tune notebook
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (力扣)1314.矩阵区域和
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .form文件_SSM框架文件上传篇
  • .net mvc部分视图
  • .NET MVC之AOP
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • /etc/skel 目录作用
  • @html.ActionLink的几种参数格式
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [2016.7.Test1] T1 三进制异或
  • [C#]使用PaddleInference图片旋转四种角度检测