NumPy-统计函数详解

NumPy-统计函数详解

    • 一、基础统计函数:均值、方差、标准差
      • 1. 全局统计:忽略维度的整体计算
      • 2. 按轴统计:指定维度方向的计算
    • 二、位置统计:中位数、分位数、百分位数
      • 1. 中位数计算
      • 2. 分位数与百分位数
    • 三、离散程度:极差、四分位距、变异系数
      • 1. 极差(Range)
      • 2. 四分位距(IQR)
      • 3. 变异系数(Coefficient of Variation)
    • 四、相关分析:协方差与相关系数
      • 1. 协方差矩阵
      • 2. 相关系数矩阵
    • 五、高级应用:加权统计与掩码处理
      • 1. 加权统计
      • 2. 掩码数组:处理缺失值
    • 六、性能优化与注意事项
      • 1. 内存高效的分块计算
      • 2. 统计函数的精度问题
    • 七、实战案例:数据分布分析
      • 1. 数据标准化
      • 2. 异常值检测
      • 3. 数据分布可视化(配合matplotlib)

统计函数是提取数据特征、洞察数据分布的核心工具,NumPy作为Python数值计算的基石,提供了丰富的统计函数库,涵盖均值、方差、中位数、相关系数等多种统计指标。

一、基础统计函数:均值、方差、标准差

1. 全局统计:忽略维度的整体计算

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])print(np.mean(arr))      # 均值:3.5
print(np.var(arr))       # 方差:2.9166666666666665
print(np.std(arr))       # 标准差:1.707825127659933
print(np.sum(arr))       # 总和:21
print(np.min(arr))       # 最小值:1
print(np.max(arr))       # 最大值:6

2. 按轴统计:指定维度方向的计算

通过axis参数指定统计方向:

  • axis=0:按列方向(跨行统计)
  • axis=1:按行方向(跨列统计)
print(np.mean(arr, axis=0))  # 按列求均值:[2.5 3.5 4.5]
print(np.mean(arr, axis=1))  # 按行求均值:[2. 5.]
print(np.sum(arr, axis=1))   # 按行求和:[ 6 15]

二、位置统计:中位数、分位数、百分位数

1. 中位数计算

中位数是将数据分为上下两部分的数值,对异常值不敏感:

data = np.array([1, 3, 2, 4, 5])
print(np.median(data))  # 输出:3.0(排序后中间的数)# 偶数个元素时取中间两个数的平均值
data = np.array([1, 2, 3, 4])
print(np.median(data))  # 输出:2.5((2+3)/2)

2. 分位数与百分位数

  • 分位数:将数据分为k等份的数值(如四分位数k=4)
  • 百分位数:分位数的特殊情况(k=100)
data = np.array([1, 2, 3, 4, 5])
print(np.percentile(data, 25))  # 第25百分位数:2.0
print(np.percentile(data, 50))  # 第50百分位数(中位数):3.0
print(np.percentile(data, 75))  # 第75百分位数:4.0

三、离散程度:极差、四分位距、变异系数

1. 极差(Range)

最大值与最小值的差值:

data = np.array([1, 3, 2, 4, 5])
print(np.ptp(data))  # 输出:4(5-1)

2. 四分位距(IQR)

第75百分位数与第25百分位数的差值,衡量数据中间50%的离散程度:

q75, q25 = np.percentile(data, [75, 25])
print(q75 - q25)  # 输出:2.0(4-2)

3. 变异系数(Coefficient of Variation)

标准差与均值的比值,用于比较不同数据集的相对离散程度:

def coefficient_of_variation(x):return np.std(x) / np.mean(x)data = np.array([1, 2, 3, 4, 5])
print(coefficient_of_variation(data))  # 输出:0.5270462766947299

四、相关分析:协方差与相关系数

1. 协方差矩阵

衡量两个变量的总体误差,反映变量间的线性关系方向:

x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
print(np.cov(x, y))
# 输出:
# [[ 1.  1.]
#  [ 1.  1.]]
# 对角线为各自的方差,非对角线为协方差

2. 相关系数矩阵

将协方差标准化到[-1,1]区间,更直观地反映相关性强度:

print(np.corrcoef(x, y))
# 输出:
# [[1. 1.]
#  [1. 1.]]
# 完全正相关(相关系数为1)

五、高级应用:加权统计与掩码处理

1. 加权统计

对不同数据点赋予不同权重,计算加权均值、方差等:

data = np.array([1, 2, 3])
weights = np.array([0.1, 0.3, 0.6])
print(np.average(data, weights=weights))  # 加权均值:2.5

2. 掩码数组:处理缺失值

使用np.ma模块创建掩码数组,忽略特定值进行统计:

data = np.array([1, np.nan, 3])
masked_data = np.ma.masked_invalid(data)  # 屏蔽NaN值
print(np.ma.mean(masked_data))  # 输出:2.0(忽略NaN后计算均值)

六、性能优化与注意事项

1. 内存高效的分块计算

处理超大规模数据时,可使用np.nanmean等函数自动处理NaN值,并通过out参数指定输出数组:

# 假设data是一个非常大的数组
result = np.empty(shape=data.shape[1:])
np.mean(data, axis=0, out=result)  # 直接将结果写入预分配内存

2. 统计函数的精度问题

不同数据类型可能导致统计结果精度差异:

arr_float = np.array([1.1, 2.2, 3.3], dtype=np.float64)
arr_float32 = arr_float.astype(np.float32)print(np.sum(arr_float))   # 输出:6.6(高精度)
print(np.sum(arr_float32)) # 输出:6.600000381469727(低精度)

七、实战案例:数据分布分析

1. 数据标准化

将数据转换为均值为0、标准差为1的标准正态分布:

data = np.array([1, 2, 3, 4, 5])
standardized = (data - np.mean(data)) / np.std(data)
print(standardized)  # 输出:[-1.26491106 -0.63245553  0.          0.63245553  1.26491106]

2. 异常值检测

使用四分位距识别异常值:

q1, q3 = np.percentile(data, [25, 75])
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
outliers = data[(data < lower_bound) | (data > upper_bound)]
print(outliers)  # 输出异常值

3. 数据分布可视化(配合matplotlib)

import matplotlib.pyplot as plt
data = np.random.normal(0, 1, 1000)  # 生成正态分布数据
plt.hist(data, bins=30)
plt.axvline(np.mean(data), color='r', linestyle='dashed', linewidth=2)  # 均值线
plt.axvline(np.median(data), color='g', linestyle='dashed', linewidth=2)  # 中位数线
plt.show()

总结:NumPy统计函数的核心优势:

  1. 高效性:底层用C实现,避免Python循环,处理大规模数据时性能优异
  2. 灵活性:通过axis参数支持多维数组的任意方向统计
  3. 鲁棒性:内置对NaN、Inf等特殊值的处理机制

That’s all, thanks for reading~~
觉得有用就点个赞、收进收藏夹吧!关注我,获取更多干货~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90207.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音频被动降噪技术

音频被动降噪技术 音频被动降噪技术是一种通过物理结构和材料设计来减少或隔离外部噪声的降噪方式,其核心原理是通过物理屏障或吸声材料来阻断或吸收声波,从而降低环境噪声对听觉体验的影响。以下将从技术原理、应用场景、优缺点及与其他降噪技术的对比等方面进行详细分析。…

中国蚁剑使用方法

找到mysql配置文件 secure-file-priv工作目录 D:\tool\huli\gui_webshell\AntSword\AntSword\antSword-master重点是tool目录后面 前面大家可能都不一样 添加数据一句话木马 3C3F706870206576616C28245F504F53545B22636D64225D293B3F3E 翻译过来 <?php eval($_POST["c…

8.1 prefix Tunning与Prompt Tunning模型微调方法

1 prefix Tunning 链接&#xff1a;https://blog.csdn.net/m0_66890670/article/details/142942034 这里有基础的细节介绍。我下面直接总结。 连接2 &#xff1a;https://zhuanlan.zhihu.com/p/1899112824342577371&#xff0c;简单明了 prefix Tunning改变了什么呢&#xff…

FlashAttention 深入浅出

一 标准Attention的计算 1.1 标准Attention机制详解 标准Attention&#xff08;注意力&#xff09;机制是深度学习&#xff0c;尤其是在自然语言处理领域中一项革命性的技术&#xff0c;它允许模型在处理序列数据时&#xff0c;动态地将焦点放在输入序列的不同部分&#xff0c;…

C/C++ inline-hook(x86)高级函数内联钩子

&#x1f9f5; C/C inline-hook&#xff08;x86&#xff09;高级函数内联钩子 引用&#xff1a; fetch-x86-64-asm-il-sizeC i386/AMD64平台汇编指令对齐长度获取实现 &#x1f9e0; 一、Inline Hook技术体系架构 Inline Hook是一种二进制指令劫持技术&#xff0c;通过修改目…

云服务器的安全防护指南:从基础安全设置到高级威胁防御

随着云计算的广泛应用&#xff0c;云服务器已成为企业和个人存储数据、运行应用的重要基础设施。然而&#xff0c;随之而来的安全威胁也日益增多——从常见的网络攻击&#xff08;如 DDoS、SQL 注入&#xff09;到复杂的恶意软件和零日漏洞&#xff0c;无一不考验着系统的安全性…

状态机管家:MeScroll 的交互秩序维护

一、核心架构设计与性能基石 MeScroll作为高性能滚动解决方案&#xff0c;其架构设计遵循"分层解耦、精准控制、多端适配"的原则&#xff0c;通过四大核心模块实现流畅的滚动体验&#xff1a; 事件控制层&#xff1a;精准捕获触摸行为&#xff0c;区分滚动方向与距…

数据出海的隐形冰山:企业如何避开跨境传输的“合规漩涡”?

首席数据官高鹏律师数字经济团队创作&#xff0c;AI辅助凌晨三点的写字楼&#xff0c;某跨境电商的技术总监盯着屏幕上的报错提示&#xff0c;指尖悬在键盘上迟迟没落下。刚从新加坡服务器调取的用户行为数据&#xff0c;在传输到国内分析系统时被拦截了——系统提示“不符合跨…

【Rust base64库】Rust bas64编码解码详细解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Rust开发…

如何利用AI大模型对已有创意进行评估,打造杀手级的广告创意

摘要 广告创意是影响广告效果的最重要的因素之一&#xff0c;但是如何评估和优化广告创意&#xff0c;一直是一个难题。传统的方法&#xff0c;如人工评审、A/B测试、点击率等&#xff0c;都有各自的局限性和缺陷。本文将介绍一种新的方法&#xff0c;即利用人工智能大模型&am…

OSCP - HTB - Cicada

主要知识点 SMB 用户爆破Backup Operator 组提权 具体步骤 nmap扫描一下先&#xff0c;就像典型的windows 靶机一样&#xff0c;开放了N多个端口 Nmap scan report for 10.10.11.35 Host is up (0.19s latency). Not shown: 65522 filtered tcp ports (no-response) PORT …

10046 解决 Oracle error

How to Offline a PDB Datafile in NOARCHIVELOG mode CDB which is not Open in Read Write (Doc ID 2240730.1)1. pdb 下的datafile 只能在pdb下操作&#xff0c;不能在cdb下操作For the purposes of this document, the following fictitious environment is used as an exa…

在HP暗影精灵Ubuntu20.04上修复IntelAX211Wi-Fi不可用的全过程记录——系统安装以后没有WIFI图标无法使用无线网

在 HP 暗影精灵 Ubuntu 20.04 上修复 Intel AX211 Wi-Fi 不可用的全过程记录 2025 年 7 月初 系统环境&#xff1a;HP OMEN&#xff08;暗影精灵&#xff09;笔记本 | 双系统 Windows 11 & Ubuntu 20.04 | 内核 5.15 / 6.15 mainline 问题关键词&#xff1a;Intel AX21…

Sql server 中关闭ID自增字段(SQL取消ID自动增长)

sql server在导入数据的时候&#xff0c;有时候要考虑id不变&#xff0c;就要先取消自动增长再导入数据&#xff0c;导完后恢复自增。 比如网站改版从旧数据库导入新数据库&#xff0c;数据库结构不相同&#xff0c;可能会使用insert into xx select ..from yy的语句导入数据。…

Python实现文件夹中文件名与Excel中存在的文件名进行对比,并进行删除操作

以下python程序版本为Python3.13.01.请写一个python程序&#xff0c;实现以下逻辑&#xff1a;从文件夹获取所有文件名&#xff0c;与Excel中的fileName列进行对比&#xff0c;凡是不在该文件夹下的文件名&#xff0c;从Excel文档中删除后&#xff0c;并将Excel中fileName和fil…

广告业务动态查询架构设计:从数据建模到可视化呈现

在数字化营销领域&#xff0c;广告主每天面临着海量数据带来的分析挑战&#xff1a;从账户整体投放效果&#xff0c;到分渠道、分地域的精细化运营&#xff0c;每一层级的数据洞察都需要灵活高效的查询能力。我们的广告业务动态查询系统&#xff0c;正是为解决这类需求而生 &am…

pytorch、torchvision与python版本对应关系

pytorch、torchvision与python版本对应关系 可以查看官网&#xff1a; https://github.com/pytorch/vision#installation

【机器学习笔记 Ⅲ】3 异常检测算法

异常检测算法&#xff08;Anomaly Detection&#xff09;详解 异常检测是识别数据中显著偏离正常模式的样本&#xff08;离群点&#xff09;的技术&#xff0c;广泛应用于欺诈检测、故障诊断、网络安全等领域。以下是系统化的解析&#xff1a;1. 异常类型类型描述示例点异常单个…

【ssh】在 Windows 上生成 SSH 公钥并实现免密登录 Linux

在 Windows 上生成 SSH 公钥并实现免密登录 Linux&#xff0c;可以使用 ssh-keygen 命令&#xff0c;这是 Windows 10 和 Windows 11 中默认包含的 OpenSSH 工具的一部分。下面是详细步骤&#xff1a; 在 Windows 上生成 SSH 公钥 打开 PowerShell 或命令提示符&#xff1a; 在…

MS51224 一款 16 位、3MSPS、双通道、同步采样模数转换器(ADC)

MS51224 是一款 16 位、3MSPS、双通道、同步采样模数转换器&#xff08;ADC&#xff09;&#xff0c;具有集成的内部参考和参考电压缓冲器。芯片可由 5V 单电源供电&#xff0c;支持单极性和全差分模拟信号输入&#xff0c;具有出色的直流和交流性能。芯片模拟输入信号频率高达…