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

Python NumPy(10):NumPy 统计函数

1 NumPy 统计函数

        NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等。

1.1 numpy.amin() 和 numpy.amax()

        numpy.amin() 用于计算数组中的元素沿指定轴的最小值。

numpy.amin(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
  • a: 输入的数组,可以是一个NumPy数组或类似数组的对象。
  • axis: 可选参数,用于指定在哪个轴上计算最小值。如果不提供此参数,则返回整个数组的最小值。可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。
  • out: 可选参数,用于指定结果的存储位置。
  • keepdims: 可选参数,如果为True,将保持结果数组的维度数目与输入数组相同。如果为False(默认值),则会去除计算后维度为1的轴。
  • initial: 可选参数,用于指定一个初始值,然后在数组的元素上计算最小值。
  • where: 可选参数,一个布尔数组,用于指定仅考虑满足条件的元素。

        numpy.amax() 用于计算数组中的元素沿指定轴的最大值。

numpy.amax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
  • a: 输入的数组,可以是一个NumPy数组或类似数组的对象。
  • axis: 可选参数,用于指定在哪个轴上计算最大值。如果不提供此参数,则返回整个数组的最大值。可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。
  • out: 可选参数,用于指定结果的存储位置。
  • keepdims: 可选参数,如果为True,将保持结果数组的维度数目与输入数组相同。如果为False(默认值),则会去除计算后维度为1的轴。
  • initial: 可选参数,用于指定一个初始值,然后在数组的元素上计算最大值。
  • where: 可选参数,一个布尔数组,用于指定仅考虑满足条件的元素。
import numpy as npa = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]])
print('我们的数组是:')
print(a)
print('\n')
print('调用 amin() 函数:')
print(np.amin(a, 1))
print('\n')
print('再次调用 amin() 函数:')
print(np.amin(a, 0))
print('\n')
print('调用 amax() 函数:')
print(np.amax(a))
print('\n')
print('再次调用 amax() 函数:')
print(np.amax(a, axis=0))

1.2 numpy.ptp()

        numpy.ptp() 函数计算数组中元素最大值与最小值的差(最大值 - 最小值)。

numpy.ptp(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
  • a: 输入的数组,可以是一个 NumPy 数组或类似数组的对象。
  • axis: 可选参数,用于指定在哪个轴上计算峰-峰值。如果不提供此参数,则返回整个数组的峰-峰值。可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。
  • out: 可选参数,用于指定结果的存储位置。
  • keepdims: 可选参数,如果为 True,将保持结果数组的维度数目与输入数组相同。如果为 False(默认值),则会去除计算后维度为1的轴。
  • initial: 可选参数,用于指定一个初始值,然后在数组的元素上计算峰-峰值。
  • where: 可选参数,一个布尔数组,用于指定仅考虑满足条件的元素。
import numpy as npa = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]])
print('我们的数组是:')
print(a)
print('\n')
print('调用 ptp() 函数:')
print(np.ptp(a))
print('\n')
print('沿轴 1 调用 ptp() 函数:')
print(np.ptp(a, axis=1))
print('\n')
print('沿轴 0 调用 ptp() 函数:')
print(np.ptp(a, axis=0))

1.3 numpy.percentile()

        百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。 函数numpy.percentile()接受以下参数。

numpy.percentile(a, q, axis)
  • a: 输入数组
  • q: 要计算的百分位数,在 0 ~ 100 之间
  • axis: 沿着它计算百分位数的轴

        第 p 个百分位数是这样一个值,它使得至少有 p% 的数据项小于或等于这个值,且至少有 (100-p)% 的数据项大于或等于这个值。举个例子:高等院校的入学考试成绩经常以百分位数的形式报告。比如,假设某个考生在入学考试中的语文部分的原始分数为 54 分。相对于参加同一考试的其他学生来说,他的成绩如何并不容易知道。但是如果原始分数54分恰好对应的是第70百分位数,我们就能知道大约70%的学生的考分比他低,而约30%的学生考分比他高。这里的 p = 70。

import numpy as npa = np.array([[10, 7, 4], [3, 2, 1]])
print('我们的数组是:')
print(a)print('调用 percentile() 函数:')
# 50% 的分位数,就是 a 里排序之后的中位数
print(np.percentile(a, 50))# axis 为 0,在纵列上求
print(np.percentile(a, 50, axis=0))# axis 为 1,在横行上求
print(np.percentile(a, 50, axis=1))# 保持维度不变
print(np.percentile(a, 50, axis=1, keepdims=True))

1.4 numpy.median()

        numpy.median() 函数用于计算数组 a 中元素的中位数(中值)

numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=<no value>)
  • a: 输入的数组,可以是一个 NumPy 数组或类似数组的对象。
  • axis: 可选参数,用于指定在哪个轴上计算中位数。如果不提供此参数,则计算整个数组的中位数。可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。
  • out: 可选参数,用于指定结果的存储位置。
  • overwrite_input: 可选参数,如果为True,则允许在计算中使用输入数组的内存。这可能会在某些情况下提高性能,但可能会修改输入数组的内容。
  • keepdims: 可选参数,如果为True,将保持结果数组的维度数目与输入数组相同。如果为False(默认值),则会去除计算后维度为1的轴。
import numpy as npa = np.array([[30, 65, 70], [80, 95, 10], [50, 90, 60]])
print('我们的数组是:')
print(a)
print('\n')
print('调用 median() 函数:')
print(np.median(a))
print('\n')
print('沿轴 0 调用 median() 函数:')
print(np.median(a, axis=0))
print('\n')
print('沿轴 1 调用 median() 函数:')
print(np.median(a, axis=1))

1.5 numpy.mean()

        numpy.mean() 函数返回数组中元素的算术平均值,如果提供了轴,则沿其计算。算术平均值是沿轴的元素的总和除以元素的数量。

numpy.mean(a, axis=None, dtype=None, out=None, keepdims=<no value>)
  • a: 输入的数组,可以是一个 NumPy 数组或类似数组的对象。
  • axis: 可选参数,用于指定在哪个轴上计算平均值。如果不提供此参数,则计算整个数组的平均值。可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。
  • dtype: 可选参数,用于指定输出的数据类型。如果不提供,则根据输入数据的类型选择合适的数据类型。
  • out: 可选参数,用于指定结果的存储位置。
  • keepdims: 可选参数,如果为True,将保持结果数组的维度数目与输入数组相同。如果为False(默认值),则会去除计算后维度为1的轴。
import numpy as npa = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6]])
print('我们的数组是:')
print(a)
print('\n')
print('调用 mean() 函数:')
print(np.mean(a))
print('\n')
print('沿轴 0 调用 mean() 函数:')
print(np.mean(a, axis=0))
print('\n')
print('沿轴 1 调用 mean() 函数:')
print(np.mean(a, axis=1))

1.6 numpy.average()

        numpy.average() 函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。考虑数组[1,2,3,4]和相应的权重[4,3,2,1],通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。

加权平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1)
numpy.average(a, axis=None, weights=None, returned=False)
  • a: 输入的数组,可以是一个 NumPy 数组或类似数组的对象。
  • axis: 可选参数,用于指定在哪个轴上计算加权平均值。如果不提供此参数,则计算整个数组的加权平均值。可以是一个整数表示轴的索引,也可以是一个元组表示多个轴。
  • weights: 可选参数,用于指定对应数据点的权重。如果不提供权重数组,则默认为等权重。
  • returned: 可选参数,如果为True,将同时返回加权平均值和权重总和。
import numpy as npa = np.array([1, 2, 3, 4])
print('我们的数组是:')
print(a)
print('\n')
print('调用 average() 函数:')
print(np.average(a))
print('\n')
# 不指定权重时相当于 mean 函数
wts = np.array([4, 3, 2, 1])
print('再次调用 average() 函数:')
print(np.average(a, weights=wts))
print('\n')
# 如果 returned 参数设为 true,则返回权重的和
print('权重的和:')
print(np.average([1, 2, 3, 4], weights=[4, 3, 2, 1], returned=True))

        在多维数组中,可以指定用于计算的轴。

import numpy as npa = np.arange(6).reshape(3, 2)
print('我们的数组是:')
print(a)
print('\n')
print('修改后的数组:')
wt = np.array([3, 5])
print(np.average(a, axis=1, weights=wt))
print('\n')
print('修改后的数组:')
print(np.average(a, axis=1, weights=wt, returned=True))

1.7 标准差

        标准差是一组数据平均值分散程度的一种度量,标准差是方差的算术平方根。公式如下:

std = sqrt(mean((x - x.mean())**2))

        如果数组是 [1,2,3,4],则其平均值为 2.5。 因此,差的平方是 [2.25,0.25,0.25,2.25],并且再求其平均值的平方根除以 4,即 sqrt(5/4) ,结果为 1.1180339887498949。

import numpy as npprint(np.std([1, 2, 3, 4]))

1.8 方差

        统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。

import numpy as npprint(np.var([1, 2, 3, 4]))

 

http://www.lryc.cn/news/529637.html

相关文章:

  • Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成
  • 【字符串两大注意事项】
  • jmap命令详解
  • 微机原理与接口技术期末大作业——4位抢答器仿真
  • FOC核心原理的C语言实现
  • 基于互联网+智慧水务信息化整体解决方案
  • 【信息系统项目管理师-选择真题】2005下半年综合知识答案和详解
  • 计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习
  • 第十一章 F - H 开头的术语
  • 深度研究新范式:通过Ollama和DeepSeek R1实现自动化研究
  • 深度学习的应用
  • 基于51单片机和WS2812B彩色灯带的流水灯
  • DFS(深度优先搜索)与回溯算法详解
  • 服务器虚拟化技术详解与实战:架构、部署与优化
  • 数据分析系列--②RapidMiner导入数据和存储过程
  • CSS 背景与边框:从基础到高级应用
  • 国内外人工智能AI工具网站大全(一键收藏,应有尽有)
  • Java中初步使用websocket(springBoot版本)
  • 2025年大年初一篇,C#调用GPU并行计算推荐
  • K8S ReplicaSet 控制器
  • FreeRTOS学习 --- 任务调度
  • 【小鱼闪闪】单片机开发工具——米思齐软件下载安装(图文)
  • MFC开发,给对话框添加垂直滚动条并解决鼠标滚动响应的问题
  • 动态规划DP 最长上升子序列模型 导弹防御模型(题目分析+C++完整代码实现)
  • LevelDB 源码阅读:写入键值的工程实现和优化细节
  • 药店药品销售管理系统的设计与实现
  • 人格分裂(交互问答)-小白想懂Elasticsearch
  • 【论文投稿-第八届智能制造与自动化学术会议(IMA 2025)】HTML, CSS, JavaScript:三者的联系与区别
  • python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)
  • 网络工程师 (9)文件管理