Python-numpy中常用的统计函数及转换函数
numpy中常用的统计函数
- numpy中常用统计函数
- numpy普通统计函数
- 忽略 NaN 值进行统计
- 百分位数
- numpy中形状转换函数
- 重塑数组(reshape)
- 展平数组(flatten/ravel)
- 转置(transpose/T)
- 数据类型的转换
- 使用astype()转换类型
- 元素值转换
- 数学转换
- np.all(), np.any()
numpy中常用统计函数
numpy普通统计函数
-🍑 np.average是加权平均值,而我们平时所说的平均值用np.mean()。
-🍑 通过指定axis参数,可以对多维数组的特定轴进行统计。
-🍑 axis=0:按列计算, axis=1:按行计算。
函数 | 描述 | 示例代码 |
---|---|---|
np.sum() | 计算数组元素的总和 | np.sum(arr), arr.sum() |
np.mean() | 计算平均值 | np.mean(arr), arr.mean() |
np.median() | 计算中位数 | np.median(arr), arr.median() |
np.min() | 计算最小值 | np.min(arr), arr.min() |
np.max() | 计算最大值 | np.max(arr), arr.max() |
np.argmin() | 返回最小值的索引 | np.argmin(arr), arr.argmin() |
np.argmax() | 返回最大值的索引 | np.argmax(arr), arr.argmax() |
np.ptp() | 计算(最大值 - 最小值) | np.ptp(arr), arr.ptp() |
np.std() | 标准差 | np.std(arr), arr.std() |
np.average() | 加权平均值 | np.average(arr) |
code:
import numpy as nparr = np.array([1, 2, 3])
weights = np.array([0.1, 0.3, 0.6])
print(np.average(arr, weights=weights)) # 1*0.1+2*0.3+3*0.6result:
2.5
忽略 NaN 值进行统计
函数 | 描述 | 示例代码 |
---|---|---|
np.nansum() | 忽略 NaN 计算总和 | np.nansum(arr) |
np.nanmean() | 忽略 NaN 计算均值 | np.nanmean(arr) |
np.nanstd() | 忽略 NaN 计算标准差 | np.nanstd(arr) |
百分位数
- 🍓 百分位数是统计分析中常用的指标。
- 🍓 例如中位数(第 50 百分位数)、四分位数(第 25、50、75 百分位数)。
- 🍓 会自动对原来的数据进行排序,并且进行插值。
- 🍓 0-100用percentile,0-1用quantile。
函数 | 描述 | 示例代码 |
---|---|---|
np.percentile() | 计算指定百分位数的值 | np.percentile(arr, q=25) |
np.quantile() | 计算指定分位数的值(0-1 范围) | np.quantile(arr, q=0.25) |
code:
import numpy as nparr = np.array([1, 2, 3])
res_linear = np.percentile(arr, q=70, interpolation="linear") # 线性插值
res_lower = np.percentile(arr, q=70, interpolation="lower") # 取较小值
res_higher = np.percentile(arr, q=70, interpolation="higher") # 取较大值
res_nearest = np.percentile(arr, q=70, interpolation="nearest") # 取最近值
res_midpoint = np.percentile(arr, q=70, interpolation="midpoint") # 取中间值print(f"res_linear={res_linear}, res_lower={res_lower}, res_higher={res_higher},"f" res_nearest={res_nearest}, res_midpoint={res_midpoint},")result:
res_linear=2.4, res_lower=2, res_higher=3, res_nearest=2, res_midpoint=2.5
numpy中形状转换函数
重塑数组(reshape)
- 🌹 不改变数组数据的前提下,对数组的维度进行重新调整。
- 🌹 numpy.reshape(arr, newshape, order=‘C’)或者arr.reshape(newshape, order=‘C’)。
- 🌹 元素数量要匹配.
- 🌹 灵活的维度指定:在newshape里,至多可以有一个维度的值设为-1。
- 🌹 reshape返回的是原数组的一个视图,如果视图的数据被改变,原数据也会改变。
code:
import numpy as nparr1 = np.array([1,2,3,4,5,6,7,8])
arr2 = arr1.reshape(2, 4)
arr3 = arr2.copy()
arr2[1,2]=666
arr3.reshape(4, -1)
print("arr1:\n", arr1)
print("arr2:\n", arr2)
print("arr3:\n", arr3)result:
arr1:[ 1 2 3 4 5 6 666 8]
arr2:[[ 1 2 3 4][ 5 6 666 8]]
arr3:[[1 2 3 4][5 6 7 8]]
展平数组(flatten/ravel)
-🍎 flattened = reshaped.flatten() , 返回副本。
-🍎 raveled = reshaped.ravel() , # 返回视图(修改会影响原数组)。
code:
import numpy as nparr1 = np.array([1,2,3,4,5,6,7,8])
arr2 = arr1.reshape(4, -1)
arr3 = arr2.flatten()
arr4 = arr2.ravel()
arr3[4] = 666 # arr3的改变并不影响arr1和arr2
arr4[0] = 168 # arr4的改变引起arr1和arr2的改变print("arr1:\n", arr1)
print("arr2:\n", arr2)
print("arr3:\n", arr3)
print("arr4:\n", arr4)result:
arr1:[168 2 3 4 5 6 7 8]
arr2:[[168 2][ 3 4][ 5 6][ 7 8]]
arr3:[ 1 2 3 4 666 6 7 8]
arr4:[168 2 3 4 5 6 7 8]
转置(transpose/T)
- 🍐 transpose()和转置运算符T用于交换数组的维度。
- 🍐 会反转数组的维度顺序(例如,形状从 (a, b, c) 变为 (c, b, a))
- 🍐 transpose() 和 T 通常返回原数组的视图,而非副本。修改转置后的数组会影响原数组。
code:
import numpy as nparr1 = np.arange(24).reshape(2, 3, 4)
print("arr1:\n", arr1)
print(arr1.shape)arr2 = arr1.T
print("arr2:\n", arr2)
print(arr2.shape)result:
arr1:[[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]][[12 13 14 15][16 17 18 19][20 21 22 23]]]
(2, 3, 4)
arr2:[[[ 0 12][ 4 16][ 8 20]][[ 1 13][ 5 17][ 9 21]][[ 2 14][ 6 18][10 22]][[ 3 15][ 7 19][11 23]]]
(4, 3, 2)
code:
import numpy as nparr1 = np.array([list(range(1, 4)), list(range(11, 44, 11))])
arr2 = arr1.transpose()
arr2[1,1] = 666print("arr1:\n", arr1)
print("arr2:\n", arr2)result:
arr1:[[ 1 2 3][ 11 666 33]]
arr2:[[ 1 11][ 2 666][ 3 33]]
数据类型的转换
使用astype()转换类型
- 🍍 原数据类型并不发生变化。
- 🍍 可以直接实现字符串到数字的转化。
code:
import numpy as nparr1 = np.array([1.5, 2.3, 3.7])
arr2 = arr1.astype(int) # 截断小数部分,输出:[1 2 3]
arr3 = arr1.astype(bool) # 非零值转为True,输出:[ True True True]
print("arr1:\n", arr1)
print("arr2:\n", arr2)
print("arr3:\n", arr3)result:
arr1:[1.5 2.3 3.7]
arr2:[1 2 3]
arr3:[ True True True]
code:
import numpy as nparr1 = np.array(['1', '2', '3'])
arr2 = arr1.astype(int) # 转为整数:[1 2 3]
arr3 = arr2.astype(str)print("arr1:\n", arr1)
print("arr2:\n", arr2)
print("arr3:\n", arr3)result:
arr1:['1' '2' '3']
arr2:[1 2 3]
arr3:['1' '2' '3']
元素值转换
- 🌼 四舍五入
- 🌼 向上 / 向下取整
code:
import numpy as nparr1 = np.array([1.4945, 2.5245, 3.5221])
arr2 = np.round(arr1, 2)
arr3 = np.floor(arr1)
arr4 = np.ceil(arr1)print("arr1:\n", arr1)
print("arr2:\n", arr2)
print("arr3:\n", arr3)result:
arr1:[1.4945 2.5245 3.5221]
arr2:[1.49 2.52 3.52]
arr3:[1. 2. 3.]
数学转换
- 🍉 数值计算,np.abs(), np.sqrt(), np.exp(), np.log(),np.log10()。
- 🍉 三角函数。
功能 | 函数 |
---|---|
角度转弧度 | np.deg2rad(), np.radians() |
弧度转角度 | np.rad2deg(), np.degrees() |
三角函数 | np.sin(), np.cos(), np.tan() |
反三角函数 | np.arcsin(), np.arccos(), np.arctan() |
四象限反正切 | np.arctan2(y, x) |
双曲函数 | np.sinh(), np.cosh(), np.tanh() |
反双曲函数 | np.arcsinh(), np.arccosh(), np.arctanh() |
np.all(), np.any()
- 🍍 np.all()判断数组中的所有元素是否都为 True(或非零值),返回一个布尔值
- 🍍 判断数组中是否存在至少一个元素为 True(或非零值),返回一个布尔值
code:
import numpy as nparr1 = np.array([1, 2, 3])
print("np.all(arr1>0):\n", np.all(arr1>0))
print("np.all(arr1>2):\n", np.all(arr1>2))# arr2从上到下, arr2[0, 0] | arr2[1, 0] True, arr2[0, 1] | arr2[1, 1] True, 返回[True, True]
arr2 = np.array([[True, True], [False, False]])
# axis=0, arr2从上到下, arr2[0, 0] | arr2[1, 0] True, arr2[0, 1] | arr2[1, 1] True, 返回[True, True]
print(np.any(arr2, axis=0)) # 从上到下的方向
# axis=1, arr2从左到右, arr2[0, 0] | arr2[0, 1] True, arr2[1, 0] | arr2[1, 1] False, 返回[True, False]
print(np.any(arr2, axis=1)) # 从左到右的方向result:
np.all(arr1>0):True
np.all(arr1>2):False
[ True True]
[ True False]
相关文章:
Python-numpy中常用的统计函数及转换函数
numpy中常用的统计函数 numpy中常用统计函数numpy普通统计函数忽略 NaN 值进行统计百分位数 numpy中形状转换函数重塑数组(reshape)展平数组(flatten/ravel)转置(transpose/T) 数据类型的转换使用astype()转…...
【C语言干货】free细节
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、为啥*phead free掉了之后,为啥下面还 提示:以下是本篇文章正文内容,下面案例可供 可以用? 前言参考 一、为…...
网络安全-等级保护(等保) 2-0 等级保护制度现行技术标准
################################################################################ 第二章:现行等保标准要求,通过表格方式详细拆分了等保的相关要求。 GB 17859-1999 计算机信息系统 安全保护等级划分准则【现行】 GB/T22240-2020 《信息安全技术 网…...

WebSocket(看这一篇就够了)
文章目录 WebSocket 基本概念什么是WebSocket?为什么需要 WebSocket?与 HTTP 协议的区别WebSocket协议的原理WebSocket工作流程WebSocket 数据帧结构和控制帧结构。JavaScript 中 WebSocket 对象的属性和方法,以及如何创建和连接 WebSocket。webSocket简…...

旧物回收小程序:让闲置焕发光彩,为生活增添价值
你是否常常为家中堆积如山的闲置物品而烦恼?那些曾经心爱的物品,如今却成了占据空间的“鸡肋”,丢弃可惜,留着又无处安放。别担心,一款旧物二手回收小程序将为你解决这一难题,让闲置物品重新焕发光彩&#…...
精益数据分析(73/126):黏性阶段的功能优先级法则——七问决策模型与风险控制
精益数据分析(73/126):黏性阶段的功能优先级法则——七问决策模型与风险控制 在创业的黏性阶段,如何从海量的功能创意中筛选出真正能提升用户留存的关键改动?今天,我们结合《精益数据分析》中的“开发功能…...
React声明式编程(手动控制,大型项目,深度定制)与Vue响应式系统(自动优化,中小型项目,快速开发)区别
文章目录 React声明式与Vue响应式区别详解一、响应式机制原理对比1.1 Vue的响应式系统Vue响应式流程图Vue响应式代码示例 1.2 React的声明式更新React声明式流程图React声明式代码示例 二、更新触发逻辑差异2.1 Vue的自动更新Vue依赖收集机制 2.2 React的手动更新React Diff算法…...

数学建模MathAI智能体-2025电工杯A题实战
题目: 光伏电站发电功率日前预测问题 光伏发电是通过半导体材料的光电效应,将太阳能直接转化为电能的技术。光伏电站是由众多光伏发电单元组成的规模化发电设施。 光伏电站的发电功率主要由光伏板表面接收到的太阳辐射总量决定,不同季节太阳…...
跨平台游戏引擎 Axmol-2.6.0 发布
Axmol 2.6.0 版本是一个以错误修复和功能改进为主的次要LTS长期支持版本 🙏感谢所有贡献者及财务赞助者:scorewarrior、peterkharitonov、duong、thienphuoc、bingsoo、asnagni、paulocoutinhox、DelinWorks 相对于2.5.0版本的重要变更: 通…...

C# Windows Forms应用程序-002
目录 项目结构 主类和命名空间 构造函数和析构函数 初始化组件 (InitializeComponent) 按钮点击事件处理程序 主程序入口点 项目截图: 完整代码: 项目结构 这个项目是一个简单的C# Windows Forms应用程序,获取指定文件的根信息…...

理解计算机系统_线程(八):并行
前言 以<深入理解计算机系统>(以下称“本书”)内容为基础,对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 接续理解计算机系统_并发编程(10)_线程(七):基于预线程化的…...

【MySQL】09.索引
索引是用来提高数据库的性能的,但查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值在于提高一个海量数据的检索速度。 1. 认识磁盘 MySQL 给用户提供存储服务,而存储的都是数据&…...

【备忘】 windows 11安装 AdGuardHome,实现开机自启,使用 DoH
windows 11安装 AdGuardHome,实现开机自启,使用 DoH 下载 AdGuardHome解压 AdGuardHome启动 AdGuard Home设置 AdGuardHome设置开机自启安装 NSSM设置开机自启重启电脑后我们可以访问 **http://127.0.0.1/** 设置使用 AdGuardHome DNS 效果图 下载 AdGua…...

[Windows] 游戏常用运行库- Game Runtime Libraries Package(6.2.25.0409)
游戏常用运行库 合集 整合了许多游戏会用到的运行库,支持 Windows XP – Windows 11 系统,并且支持自动检测系统勾选推荐的运行库,方便快捷。 本版特点: By:mefcl 整合常见最新游戏所需运行库 根据系统自动勾选推荐…...
MYSQL order 、group 与row_number详解
一、order by order by A ASC, B DESC,C ASC … 上述语句会先按照A排序,当A相同的时候再按照B排序,当B相同的再按照C排序,并会不按照ABC组合一起排序 二、group by group by A,B,C… select 中的字段必须是group by中的字段,…...
QT之巧用对象充当信号接收者
备注:以下仅为演示不代表合理性,适合简单任务,逻辑简单、临时使用,可保持代码简洁,对于复杂的任务应创建一个专门的类来管理信号和线程池任务. FileScanner类继承QObject和QRunnable,扫描指定目录下的文件获…...
《红警2000》游戏信息
游戏背景:与《红色警戒》系列的其他版本类似,基于红警 95 的背景设定,讲述了第二次世界大战期间,世界各国为了争夺全球霸权而展开战争。游戏画面与音效:在画面上相比早期的红警版本有一定提升,解析度更高&a…...
Vue3 + ThinkPHP8 + PHP8.x 生态与 Swoole 增强方案对比分析
一、基础方案:Vue3 ThinkPHP8 PHP8.x 传统架构 优点 成熟稳定 组合经过长期验证,文档和社区资源丰富ThinkPHP8 对PHP8.x有良好支持,性能比PHP7提升20-30% 开发效率高 TP8的ORM和路由系统大幅减少样板代码Vue3组合式API Vite开发…...

(九)PMSM驱动控制学习---高阶滑膜观测器
在之前的文章中,我们介绍了永磁同步电机无感控制中的滑模观测器,但是同时我们也认识到了他的缺点:因符号函数带来的高频切换分量,使用低通滤波器引发相位延迟;在本篇文章,我们将会介绍高阶滑模观测器的无感…...

25年上半年五月之软考之设计模式
目录 一、单例模式 二、工厂模式 三、 抽象工厂模式 四、适配器模式 五、策略模式 六、装饰器模式 编辑 考点:会挖空super(coffeOpertion); 七、代理模式 为什么必须要使用代理对象? 和装饰器模式的区别 八、备忘录模式 一、单例模式 这个…...

Mongo DB | 多种修改数据库名称的方式
目录 方法一:使用 mongodump 和 mongorestore 命令 方法二:使用 db.copyDatabase() 方法 方法三:使用 MongoDB Compass 在 MongoDB 中,更改数据库名称并不是一个直接的操作,因为 MongoDB 不提供直接重命名数据库的命…...

QListWidget的函数,信号介绍
前言 Qt版本:6.8.0 该类用于列表模型/视图 QListWidgetItem函数介绍 作用 QListWidget是Qt框架中用于管理可交互列表项的核心组件,主要作用包括: 列表项管理 支持动态添加/删除项:addItem(), takeItem()批量操作:addItems()…...
Python类属性与实例属性的覆盖机制:从Vector2d案例看灵活设计
类属性与实例属性的交互机制 Python中类属性与实例属性的关系体现了语言的动态特性。当访问一个实例属性时,Python会首先查找实例自身的__dict__,如果找不到,才会去查找类的__dict__。这种机制使得类属性可以优雅地作为实例属性的默认值。 …...
QML与C++交互2
在QML与C的交互中,主要有两种方式:在C中调用QML的方法和在QML中调用C的方法。以下是具体的实现方法。 在C中调用QML的方法 首先,我们需要在QML文件中定义一个函数,然后在C代码中调用它。 示例 //QML main.qml文件 import QtQu…...

EtherNet/IP机柜内解决方案在医疗控制中心智能化的应用潜能和方向分析
引言 在数智化转型浪潮席卷各行各业的今天,医疗领域同样面临着提升运营效率、改善患者体验和加强系统可靠性的多重挑战。Rockwell Automation于2025年5月20日推出的EtherNet/IP机柜内解决方案,为医疗中心的自动化升级提供了一种创新路径。本报告将深入分析这一解决方案的核心…...
springboot中各模块间实现bean之间互相调用(service以及自定义的bean)
springboot中各模块间实现bean之间互相调用(service以及自定义的bean) https://blog.csdn.net/qq_29477175/article/details/122827446?ops_request_misc&request_id&biz_id102&utm_termspringboot%E5%A4%9A%E6%A8%A1%E5%9D%97%E4%B9%8B%E…...
RabbitMQ 可靠性保障:消息确认与持久化机制(二)
四、持久化机制:数据安全的护盾 (一)交换机持久化 交换机持久化是确保消息路由稳定的重要保障 。在 RabbitMQ 中,交换机负责接收生产者发送的消息,并根据路由规则将消息路由到相应的队列 。如果交换机在 RabbitMQ 重…...
QML学习07Property
Property 1、Property1.1 定义控件1.2 给控件取别名,不向外暴露控件名字 2、总结 1、Property property int myTopMargin: 0 property int myBottomMargin: 0 property real myReal: 0.0 //双精度浮点数 property string myString: "test" property…...
Skywalking安装部署使用教程
目录 核心功能 架构设计 安装与配置 使用场景 社区与支持 总结 官网 https:///apache/skywalking 部署Skywalking 添加报警配置 自定义告警规则如果您需要自定义告警规则,则需要编辑 alarm-settings.yml 文件并添加自定义的规则。具体来说,您需要按照 YAML 格式定义…...
网络编程与axios技术
网络编程技术是指通过计算机网络实现不同设备之间数据交互的技术。它基于网络通信协议(如TCP/IP、HTTP)和编程语言的支持,结合库和API实现高效的数据传输与通信。以下是几种主流技术栈(JavaScript、TypeScript、React、Next.js、P…...