numpy 最大值_第 85 天:NumPy 统计函数

45df33e9aa631d093d49bf019a131152.png

数学统计在我们的程序当中特别是数据分析当中是必不可少的一部分,本文就来介绍一下 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 都在这里b3c96638336ee2a72d6307bf12ca1771.png

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

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

相关文章

java中如何实现变量可配置_Java基础-如何配置环境变量

Java环境变量详细教程第一步、打开电脑环境变量设置窗口以Win10系统为例子。在桌面找到此电脑,右键此电脑— —>属性,点击属性— —>点击左侧高级系统设置点击高级系统设置点击环境变量第二步、新建JAVA_HOME点击系统变量中的新建,出现输入框&…

python三引号解析_[宜配屋]听图阁

和C语言一样,引号属于特殊功能字符,不能够像普通字符那样直接通过print打印,需要进行一些处理,比如说反斜杠转义等。这里介绍几种打印三引号的方法,希望对需要的朋友有用。1、第一中方法比较简单,直接使用三…

定时执行java程序_如何让Java程序定时运行

由于项目开发的需要,必须实现让一个Java程序定时运行。比如,我的项目中,有一个网络蜘蛛,需要从互联网上抓取数据,与其配合,有另一个程序来对新抓取的页面进行索引的创建,由于数据源更新频率不高…

卡法电子商务 java_javacard DES算法API使用示例

********** 2017年3月15日留言 ——关于java卡Applet系列csdn博文 *************貌似有不少人在看我写的几篇关于java卡applet的博文,也收到了一些评论指正博文错误,或者私信叫我发代码文件过去。在此需要说明的是,java卡applet的这几篇博文…

mysql dump工具升级_MySQL数据库升级

当前不少系统的数据库依旧是MySQL5.6,由于MySQL5.7及MySQL8.0在性能及安全方面有着很大的提升,因此需要升级数据库。本文通过逻辑方式、物理方式原地升级来介绍MySQL5.6 升级至MySQL5.7的方法,并介绍其使用场景。1. 逻辑方式升级逻辑方式升级…

java int 128 ==_为什么 Java Integer 中“128==128”为false,而”100==100“为true?

这是一个挺有意思的讨论话题,让我们用代码说话吧!运行下面的代码:Integer a 128, b 128;System.out.println(a b);Integer c 100, d 100;System.out.println(c d);你会得到:falsetrue基本知识:我们知道,如果两个引用指向同一个对象&…

初始java_第一章__初始JAVA

1.java的三个发展方向:JAVASE(面向对象、API、JVM)、JAVAME(移动设备、游戏、通信)、JAVAEE(JSP、EJB、服务)2.开发JAVA的程序步骤:1.编写源程序 2.编译 3.运行3.JDKJRE开发工具下载java环境jdk 安装并配置环境变量,.安装直接下一步下一步直到…

appium java环境_Appium环境搭建(Windows版)

注:appium安装到C盘,node.js安装到C盘一、安装node.js1、到官网下载node.js:https://nodejs.org/en/download/2、获取到安装文件后,直接双击安装文件,根据程序的提示,完成nodejs的安装。3、安装完成后&…

ie11加载java插件_IE浏览器中ActiveX插件的使用

在某些行业的B/S应用系统中会不可避免的要用到ActiveX浏览器插件,而ActiveX插件只能在IE内核浏览器中运行,而常用的IE浏览器的版本众多,从IE6到IE11,总共有6个版本,这就给开发的应用系统造成了不小的困扰:如…

mysql的增_MySQL之增_insert-replace

MySQL增删改查之增insert、replace一、INSERT语句带有values子句的insert语句,用于数据的增加语法:INSERT [INTO] tbl_name[(col_name,...)]{VALUES | VALUE} (expr ,...),(...),...①用来把一个新行插入到表中②为和其它数据库保持一致,不要…

php redis 传递闭包,通过缓存构建高性能 Laravel 应用

通过缓存构建高性能 Laravel 应用由 学院君 创建于3年前, 最后更新于 11个月前版本号 #220678 views9 likes1 collects配置Laravel 为不同的缓存系统提供了统一的 API。缓存配置位于 config/cache.php。在该文件中你可以指定在应用中默认使用哪个缓存驱动。Laravel 开箱支持主流…

imclearboder matlab,Lucas

Lucas-Kanade跟踪算法是视觉跟踪中一个很经典的基于点的逐帧跟踪算法。起初这个算法是用来求解stero matching1的,后来经过Carlo Tomasi2和Jianbo Shi3等人的发展渐趋成熟。Jianbo Shi提出了一种筛选跟踪点特征的方法,使得特征的跟踪更可靠。Jean-Yves B…

matlab求勒让德多项式零点,有没有勒让德多项式导数 零点程序

求N1次勒让德多项式的m(m0,1,...)阶导数零点Matlab程序子程序:function xjp(N,alpha,beta)n1:N;a(1)(alphabeta2)/2;b(1)(beta-alpha)/2;a([2:N1])(2*nalphabeta1).*(2*nalphabeta2)./(2*(n1).*(nalphabeta1));b([2:N1])(alpha*alpha-beta*beta)*(2*nalphabeta1)./(…

js_long.php,protobuf.js 与 Long.js的使用详解

这次给大家带来protobuf.js 与 Long.js的使用详解,是急用protobuf.js 与 Long.js的注意事项有哪些,下面就是实战案例,一起来看一下。protobuf.js的结构和webpack的加载之后的结构很相似。这样的模块化组合是个不错的结构方式。1个是适应了不同…

oracle 存储过程设置回滚点,(转)oracle 存储过程事宜使用断点回滚 -savepoint

学习存储过程中使用断点回滚事务时,发现目前网络上存在一个问题,那就是使用断点回滚后,都忘记了一个很重要的事情,提交事务。虽然使用了断点回滚,但是断点回滚不像rollBack或commit一样结束当前事务,而使用…

oracle每季度补丁,Oracle 2020 年第四季度补丁发布

半个月前,也就是 10 月 20 日, Oracle 发布了今年最后一次补丁更新,那么很多人都想打最新的 PSU,理由是有被扫到各种漏洞,有的扫描工具着实太坑,这里就不用说了,前几天看到盖总发布的文章2020年…

路由器 刷 linux系统版本,在Linux下用tftp刷写路由器固件

(以Buffalo WHR-G300N V2路由器为例)以发行版Ubuntu为例(如果你在Windows下,可下载Ubuntu的ISO文件,再用wubi安装Ubuntu,可免去重新分区的麻烦),下载Buffalo WHR-G300N V2路由器的FTP版固件文件,放到Ubuntu的/home目录…

eval函数linux,Python中的eval()、exec()及其相关函数

刚好前些天有人提到eval()与exec()这两个函数,所以就翻了下Python的文档。这里就来简单说一下这两个函数以及与它们相关的几个函数,如globals()、locals()和compile():1. eval函数函数的作用:计算指定表达式的值。也就是说它要执行…

linux更改语言脚本,Linux shell脚本入门——shell语言脚本【CentOS】

认识脚本是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。脚本语言又被称为扩建的语言, 或者动态语言, 是一种编程语言, 用来控制软件应用程序, 脚本通常是以文本 (ASCⅡ) 保存, 只是在被调用时进行解释或者编译。学习shell脚本的用途对于一个合格的系…

linux视图版怎么输入命令,分享在Linux命令下操作MySQL视图实例代码

视图VIEW命令简介:VIEW视图就是存储下来的SELECT语句数据1。创建视图命令格式:创建[或更换][ALGORITHM {UNDEFINED | MERGE | 不是Temptable}][DEFINER {user | 当前用户 }][SQL SECURITY {DEFINER | INVOKER}]VIEW view_name [(column_list)]AS selec…