数学统计在我们的程序当中特别是数据分析当中是必不可少的一部分,本文就来介绍一下 NumPy 常见的统计函数。

最大值与最小值

numpy.amin()

用于计算数组中的元素沿指定轴的最小值。

可以通过 axis 参数传入坐标轴来指定统计的轴,当指定 axis 时,axis 的范围为 ndarray 的维度范围,可以利用 shape 函数获取 ndrray 的维度。我们来看例子:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')print(np.char.center('最小值', 15, '*'))print("所有维度的最小值:")print(np.amin(a))print('\n')print("0轴的最小值:")print(np.amin(a, 0))print('\n')print("1轴的最小值:")print(np.amin(a, 1))print('\n')# 返回初始数组:[[1 2 3] [4 5 6] [7 8 9]]******最小值******所有维度的最小值:10轴的最小值:[1 2 3]1轴的最小值:[1 4 7]

我们例子中使用的是二维数组,所以 axis 只有取0和1两个值。其实我们还可以用 numpy.min() 来计算,效果是一样的,只不过 NumPy 的官方文档上没有写 numpy.min() 这个方法,看源码我们知道这个方法其实是numpy.amin() 的别名。

numpy.amax()

用于计算数组中的元素沿指定轴的最大值。

可以通过 axis 参数传入坐标轴来指定统计的轴,当指定 axis 时,axis 的范围为 ndarray 的维度范围,可以利用 shape 函数获取 ndrray 的维度。我们来看例子:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')print(np.char.center('最大值', 15, '*'))print("所有维度的最大值:")print(np.amax(a))print('\n')print("0轴的最大值:")print(np.amax(a, 0))print('\n')print("1轴的最大值:")print(np.amax(a, 1))print('\n')# 返回初始数组:[[1 2 3] [4 5 6] [7 8 9]]******最大值******所有维度的最大值:90轴的最大值:[7 8 9]1轴的最大值:[3 6 9]

这个函数和 numpy.amin() 函数是相反的含义,也可以用 numpy.max() 来计算。

numpy.ptp()

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

实例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')print(np.char.center('最大值与最小值的差', 15, '*'))print("所有维度的极差:")print(np.ptp(a))print('\n')print("0轴的极差:")print(np.ptp(a, 0))print('\n')print("1轴的极差:")print(np.ptp(a, 1))print('\n')# 返回***最大值与最小值的差***所有维度的极差:80轴的极差:[6 6 6]1轴的极差:[2 2 2]

这个方法可以迅速的找出数组中任何维度的最大最小值之差,还是很方便的。

中位数

numpy.percentile()

百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。
numpy.percentile(a, q, axis) 接收以下参数:
a: 输入数组
q: 要计算的百分位数,在 0 ~ 100 之间
axis: 沿着它计算百分位数的轴

这个百分位怎么理解呢?

例如第60个百分位是这样一个值,它使得至少有60%的数据项小于或等于这个值,且至少有40%的数据项大于或等于这个值。

我们来看看实例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')print(np.char.center('百分位数', 15, '*'))print("50%的分位数,即数组排序之后的中位数:")print(np.percentile(a, 50))print('\n')print("0轴的中位数:")print(np.percentile(a, 50, 0))print('\n')print("1轴的中位数:")print(np.percentile(a, 50, 1))print('\n')# 返回******百分位数*****50%的分位数,即数组排序之后的中位数:5.00轴的中位数:[4. 5. 6.]1轴的中位数:[2. 5. 8.]

numpy.median()

用于计算数组 a 中元素的中位数(中值)

我们来看实例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')print(np.char.center('计算中位数', 15, '*'))print("所有元素的中位数:")print(np.median(a))print('\n')print("0轴的中位数:")print(np.median(a, 0))print('\n')print("1轴的中位数:")print(np.median(a, 1))print('\n')# 返回*****计算中位数*****所有元素的中位数:5.00轴的中位数:[4. 5. 6.]1轴的中位数:[2. 5. 8.]

总数与均值

numpy.sum()

用于按指定轴计算数组中的元素的和。

实例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')print(np.char.center('求和', 15, '*'))print("所有维度的和:")print(np.sum(a))print('\n')print("按0轴求和:")print(np.sum(a, 0))print('\n')print("按1轴求和:")print(np.sum(a, 1))print('\n')# 返回*******求和******所有维度的和:45按0轴求和:[12 15 18]按1轴求和:[ 6 15 24]

不管按哪个维度求和,得出的结果再相加肯定等于所有维度求和的结果。

numpy.mean()

按轴计算数组中元素的算术平均值。

算术平均值是沿轴的元素的总和除以元素的数量。我们来看实例:

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print("初始数组:")print(a)print('\n')print(np.char.center('计算算术平均值', 15, '*'))print("所有元素的算术平均值:")print(np.mean(a))print('\n')print("0轴的算术平均值:")print(np.mean(a, 0))print('\n')print("1轴的算术平均值:")print(np.mean(a, 1))print('\n')# 返回****计算算术平均值****所有元素的算术平均值:5.00轴的算术平均值:[4. 5. 6.]1轴的算术平均值:[2. 5. 8.]

numpy.average()

根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值,该函数可以接收一个轴参数,如果没有指定轴,则数组会被展开。

加权平均值是由每个分量乘以权重因子得到的平均值。即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。

举个例子:数组[1, 2, 3, 4]对应的权重是[4, 3, 2, 1],那么加权平均值的计算公式为:

加权平均值=(14+23+32+41)/(4+3+2+1)

实例:

import numpy as npprint(np.char.center('加权平均值', 15, '*'))b = np.array([1, 2, 3, 4])print("所有元素的加权平均值(不指定权重相当于求平均值):")print(np.average(b))print('\n')print("指定权重的加权平均值:")print(np.average(b, weights=[4, 3, 2, 1]))print('\n')print("指定权重的加权平均值以及权重的和:")print(np.average(b, weights=[4, 3, 2, 1], returned=True))print('\n')# 返回*****加权平均值*****所有元素的加权平均值(不指定权重相当于求平均值):2.5指定权重的加权平均值:2.0指定权重的加权平均值以及权重的和:(2.0, 10.0)

我们可以通过returned参数来设置是否返回权重的和。在上例中,权重数组中元素相加等于10。

方差与标准差

numpy.var()

计算数组中元素的方差

统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。计算公式为:

mean((x - x.mean())** 2)。

我们来看实例:

import numpy as npprint(np.char.center('计算方差', 15, '*'))print(np.var([1, 2, 3, 4]))print('\n')# 返回******计算方差*****1.25

numpy.std()

计算数组中袁术的标准差

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

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

我们来看实例:

import numpy as npprint(np.char.center('计算标准差', 15, '*'))print(np.std([1, 2, 3, 4]))print('\n')# 返回*****计算标准差*****1.118033988749895

总结

本文向大家介绍了 NumPy 的统计函数,包括最大最小值函数、总数与均值函数、中位数函数以及方差与标准差函数。这些函数主要运用在一些数据分析的统计工作中,我们可以不用实现这些统计方法的原理而直接使用函数,使我们的代码简洁而高效。

参考

https://numpy.org/devdocs/reference/routines.statistics.html

文中示例代码:python-100-days

系列文章第 84 天:NumPy 数学函数第 83 天:NumPy 字符串操作第 82 天:Python Web 开发之 JWT 简介第 81 天:NumPy Ndarray 对象及数据类型从 0 学习 Python 0 - 80 大合集总结PS:公号内回复 :Python,即可进入Python 新手学习交流群,一起100天计划!-END-Python 技术关于 Python 都在这里

numpy 最大值_第 85 天:NumPy 统计函数相关推荐

  1. numpy 最大值_使用 NumPy 让你的 Python 科学计算更高效

    具体的原理我也不大懂,简单理解就是Numpy的计算效率更高一些. Numpy里有两个对象: ndarray,实际上就是多维数组的含义,在Numpy数组中,维数称为秩(rank),一维数组的秩为 1,二 ...

  2. numpy 数组抽取_清晰易懂的Numpy入门教程

    原标题:清晰易懂的Numpy入门教程 翻译 | 石头 来源 | Machine Learning Plus Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包,如数据分析工具pa ...

  3. es6一维数组转二维数组_技术图文:Numpy 一维数组 VS. Pandas Series

    背景 Numpy 提供的最重要的数据结构是 ndarray,它是 Python 中 list 的扩展. Pandas 提供了两种非常重要的数据结构 Series和DataFrame. Numpy 中的 ...

  4. python寻路_【Python】 Numpy极简寻路

    [Numpy] 先感叹下最近挖坑越来越多了.. 最近想不自量力地挑战下ML甚至DL.然而我也知道对于我这种半路出家,大学数学也只学了两个学期,只学了点最基本的高数还都忘光了的渣滓来说,难度估计有点大. ...

  5. arcgis的numpy模块_数据分析之numpy模块

    Numpy Numpy是Numerical Python的简写,主要可以用来做Python数值计算.它提供了多种数据结构.算法以及大部分涉及Python数值计算所需的接口. 快速.高效的多维数组对象n ...

  6. python np array归一化_浅谈利用numpy对矩阵进行归一化处理的方法

    浅谈利用numpy对矩阵进行归一化处理的方法 本文不讲归一化原理,只介绍实现(事实上看了代码就会懂原理),代码如下: def Normalize(data): m = np.mean(data) mx ...

  7. numpy 数组 ::_看起来不错,没有麻烦:使用NumPy进行数组编程

    numpy 数组 :: It is sometimes said that Python, compared to low-level languages such as C++, improves ...

  8. python引用numpy出错_引用numpy出错详解及解决方法

    numpy出错 解决方案 Problem: how to import numpy in subdirectory? Import error of numpy within subfolder. 错 ...

  9. numpy归一化_使用numpy 高效实现K-Means聚类

    好久之前写过K-Means, 但写的极其丑陋,使用的时候还得用 sklearn.cluster.KMeans 包来干.最近需要手撕k-Means,自己也受不了多重for 循环这么disgusting的 ...

最新文章

  1. Angular 文件上传与下载
  2. mysql gbk支持_让MYSQL支持GBK
  3. 一篇文章带你分清楚JWT,JWS与JWE
  4. Spring MVC 4快速入门Maven原型已改进
  5. Effective C++学习第十一天
  6. ubuntu16.04安装gcc g++7.5.0及各个版本的切换
  7. 平衡二叉树AVL插入
  8. 解读Laravel,看PHP如何实现Facade?
  9. java 的 provider_Java Provider.Service getProvider()用法及代码示例
  10. stm32 薄膜键盘原理_雷蛇发布第二代轻机械键盘,你了解什么是轻机械键盘吗?...
  11. 2-7 StatusStrip 控件
  12. 详细了解DAS、SAN和NAS三种存储方式
  13. mate30装google play_2020年华为mate30pro安装谷歌服务图文教程
  14. 通过脚手架安装Ant+react+umi+dva项目(一)
  15. win10新建虚拟机网络配置未连接服务器,Win10系统VMWare虚拟机无法连接网络怎么办?...
  16. VSCode配置文件“.vscode/c_cpp_properties.json”不断被覆盖的原因及解决方法
  17. 微服务之服务治理相关内容
  18. 阿里云推出高效病毒基因序列检索功能,它的底层逻辑原来是这样的
  19. Gradle build failed to produce an .apk file. It‘s likely that this file was generated under XXX
  20. Kubernetes(K8s)优势究竟是什么?

热门文章

  1. kafka系统设计开篇
  2. oracle函数分为几个大类,ORACLE常见分析函数有哪几类呢?
  3. 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
  4. 工作流实战_07_flowable 流程定义查看流程图和xml
  5. 实战04_redis-cluster集群搭建
  6. linux显示mem进行排序,Linux查看系统负载(CPU和MEM考虑)
  7. java多参方法_Java中多参数方法进阶
  8. 保镖机器人作文_关于机器人作文400字
  9. java 堆栈信息_每天学习一个命令:jstack 打印 Java 进程堆栈信息
  10. android图片适配到裁剪框,Android图片剪裁-调用系统实现,完美适配魅族等机型