引入模块import numpy as np

1.numpy.sum(a, axis=None)/a.sum(axis=None)

根据给定轴axis计算数组a相关元素之和,axis整数或元组,不指定轴则默认求全部元素之和。

ashape(d0,d1,..,dn),当axis=(m1,m2,...mi)时,返回结果应是一个shape(d0,d1,...,dn)-(dm1,dm2,...dmi),每个元素是轴m1,m2,...mi上元素之和

例:

a = np.arange(24).reshape((2, 3, 4))
print("数组a:\n", a)
print("np.sum(a):", np.sum(a)) # 全部元素和
print("np.sum(a, axis=0):\n", np.sum(a, axis=0)) # 第0轴(最外围)的元素和
print("np.sum(a, axis=1):\n", np.sum(a, axis=1)) # 第1轴元素和
print("np.sum(a, axis=(0, 1)):\n", np.sum(a, axis=(0, 1))) # 第0轴和第1轴元素之和
print("np.sum(a, axis=(0, 2)):\n", np.sum(a, axis=(0, 2))) # 第0轴和第2轴元素之和

输出:

数组a:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]] [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]] np.sum(a): 276 np.sum(a, axis=0):
[[12 14 16 18] # 0+12=12 1+13=14 ...
[20 22 24 26] # 4+16=20 5+17=22
[28 30 32 34]] np.sum(a, axis=1):
[[12 15 18 21] # 0+4+8=12 1+5+9=15 ...
[48 51 54 57]] # 12+16+20=48 13+17+21=51 np.sum(a, axis=(0, 1)):
[60 66 72 78] # 0+4+8+12+16+20=60 1+5+9+13+17+21=66... np.sum(a, axis=(0, 2)):
[ 60 92 124] # 0+1+2+3+12+13+14+15=60 4+5+6+7+16+17+18+19=92....

2.numpy.mean(a, axis=None)/a.mean(axis=None)`

根据给定轴axis计算数组a相关元素的平均值,axis整数或元组。

不指定axis,默认求所有元素平均值。指定axis,求指定轴上元素平均值。

ashape(d0,d1,..,dn),当axis=(m1,m2,...mi)时,返回结果应是一个shape(d0,d1,...,dn)-(dm1,dm2,...dmi),每个元素是轴m1,m2,...mi上所有元素的平均值

例:

print("数组a:\n", a)
print("np.mean(a):", np.mean(a)) # 全部元素的平均值
print("np.mean(a, axis=0):\n", np.mean(a, axis=0)) # 0轴上的平均值
print("np.mean(a, axis=(0, 2)):\n", np.mean(a, axis=(0, 2))) # 0轴和2轴平均值

输出:

数组a:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]] [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
np.mean(a): 11.5
np.mean(a, axis=0):
[[ 6. 7. 8. 9.] # (0+12)/2=6 (1+13)/2=7...
[10. 11. 12. 13.] # (4+16)/2=10 (5+17)/2=11...
[14. 15. 16. 17.]] # (8+20)/2=14 (9+21)/2=15..
np.mean(a, axis=(0, 2)):
[ 7.5 11.5 15.5] # (0+1+2+3+12+13+14+15)/2=7.5..

3.numpy.average(a,axis=None,weights=None)

根据给定轴axis计算数组a相关元素的加权平均值,

weights是一个权重数组,形状应与给定数组ashape相同,即:weights.shape=a.shape或者在指定一个轴axis时,weight则应是一个一维数组,数组元素个数与指定轴维度数相同。

当不指定weigts时,此时即为求平均值,效果同.mean相同

例:

print("数组a:\n", a)
print("np.average(a, axis=0):\n", np.average(a, axis=0))
print("np.average(a, axis=0, weights=[10, 1]):\n", np.average(a, axis=0, weights=[10, 1]))
wei = np.random.randint(1, 60, (2, 3, 4 ))
print("权重数组是:", wei)
print("np.average(a, axis=(0, 2), weights=wei):\n", np.average(a, axis=(0, 2), weights=wei))

输出:

数组a:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]] [[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
np.average(a, axis=0):
[[ 6. 7. 8. 9.]
[10. 11. 12. 13.]
[14. 15. 16. 17.]]
np.average(a, axis=0, weights=[10, 1]):
[[ 1.09090909 2.09090909 3.09090909 4.09090909] # (0*10+12*1)/(10+1)=1.0909
[ 5.09090909 6.09090909 7.09090909 8.09090909] # (4*10+16*1)/(10+1)=5.0909
[ 9.09090909 10.09090909 11.09090909 12.09090909]]
权重数组是: [[[37 5 50 9]
[ 9 40 17 42]
[45 4 41 29]] [[17 24 29 37]
[20 8 14 37]
[ 3 1 48 14]]]
np.average(a, axis=(0, 2), weights=wei):
[ 7.73557692 10.92513369 13.96756757] # (0*37+1*5+2*50+3*9+12*17+13*24+14*29+15*37)/(37+5+50+9+17+24+29+37)=7.7355

4.numpy.std(a,axis=None)/a.std(axis=None)       numpy.var(a,axis=None)/a.var(axis=None)

.std(a,axis=None)根据给定轴axis计算数组a相关元素的总体标准差(要与样本标准差区分)

即:\(\sigma=\sqrt{{\frac 1N}\sum_{i=1}^N(x_i-\overline x)^2}\)

(Standard Deviation)——std标准差,又称均方差

.var(a,axis=None)根据给定轴axis计算数组a相关元素的总体方差

即:\(\sigma^2={\frac {\sum_{i=1}^N(x_i-\overline x)^2}N}\)

variance——var方差

b = np.random.randint(1, 30, (2, 3, 4))
print("数组b:\n", b)
print("np.std(b, axis=2):\n", np.std(b, axis=2)) # 标准差
print("np.var(b, axis=2):\n", np.var(b, axis=2)) # 方差

输出:

数组b:
[[[16 8 27 24]
[12 15 25 8]
[11 19 15 26]] [[29 15 18 24]
[17 8 4 15]
[ 2 28 10 21]]]
np.std(b, axis=2):
[[7.39509973 6.28490254 5.53962995]
[5.40832691 5.24404424 9.98436277]]
np.var(b, axis=2):
[[54.6875 39.5 30.6875]
[29.25 27.5 99.6875]]

我们来检验一下,例如,对2轴中12 15 25 8这组数据进行求标准差:

均值为:\(\overline x=15\)

则样本标准差为:\(\sigma=\sqrt{\frac {(12-15)^2+(15-15)^2+(25-15)^2+\left(8-15\right)^2}{4}}=\sqrt{39.5}\approx6.284902544988\)

方差为:\(\sigma^2=39.5\)

5.最值函数

numpy.amin(a,axis=None)/numpy.min(a,axis=None)/a.min(axis=None)

返回轴axis上的最小值,若不指定轴,默认返回所有元素最小值

numpy.amax(a,axis=None)/numpy.max(a,axis=None)/a.max(axis=None)

返回轴axis上的最大值,若不指定轴,默认返回所有元素最大值

例:

c = np.random.randint(1, 60, (2, 3, 4))
print("数组c:\n", c)
print("np.min(c): ", np.min(c))
print("np.amin(c, axis=1):\n", np.amin(c, axis=1))
print("c.min(axis=2): \n", c.min(axis=2))
print("-"*20 + '分割线' + '-'*20)
print("np.max(c): ", np.max(c))
print("np.amax(c, axis=1):\n", np.amax(c, axis=1))
print("c.max(axis=2):\n", c.max(axis=2))

输出:

数组c:
[[[15 50 24 6]
[ 2 8 27 53]
[52 23 9 35]] [[17 38 42 20]
[ 4 32 9 17]
[48 39 17 40]]]
np.min(c): 2
np.amin(c, axis=1):
[[ 2 8 9 6]
[ 4 32 9 17]]
c.min(axis=2):
[[ 6 2 9]
[17 4 17]]
--------------------分割线--------------------
np.max(c): 53
np.amax(c, axis=1):
[[52 50 27 53]
[48 39 42 40]]
c.max(axis=2):
[[50 53 52]
[42 32 48]]

严格的说,a.min等并不是NumPy库的函数


6.最值下标

numpy.argmin(a,axis=None)/a.argmin(axis=None)

返回数组指定轴上最小值降成一维后的相对坐标

numpy.argmax(a,axis=None)/a.argmax(axis=None)

返回数组指定轴上最大值降成一维后的相对坐标

例:

print("数组c:\n", c)
print("c.argmax(): ", c.argmax())
print("np.argmax(c, axis=2):\n", np.argmax(c, axis=2))
print("-"*20 + '分割线' + '-'*20)
print("np.argmin(c): ", np.argmin(c))
print("c.argmin(axis=1):\n", c.argmin(axis=1))

输出:

数组c:
[[[50 44 13 16]
[26 23 31 35]
[ 5 21 42 8]] [[ 6 53 10 57]
[14 5 18 38]
[40 31 4 55]]]
c.argmax(): 15 # 降一维后57下标是15
np.argmax(c, axis=2):
[[0 3 2] # 在轴2上,50-0 35-3 42-2 57-3 38-3 55-3
[3 3 3]]
--------------------分割线--------------------
np.argmin(c): 22
c.argmin(axis=1):
[[2 2 0 2]
[0 1 2 1]]

7.numpy.unravel_index(index, shape)

根据shape将一维下标index转换成多维下标(对应shape的下标),与6中的argmax,argmin配合使用

例:

print("数组c:\n", c)
print(np.unravel_index(np.argmax(c), c.shape))

输出:

 [[[22  4 28 56]
[45 34 3 22]
[59 43 43 27]] [[32 35 47 53]
[ 7 27 41 18]
[40 32 30 43]]]
(0, 2, 0) # 59是数组最大值,其索引坐标为(0,2,0)

8.numpy.median(a,axis=None)

返回数组在指定轴上的中位数(中值),若不指定轴,默认返回全部元素中位数

例:

print("数组c:\n", c)
print("np.median(c): ", np.median(c))

输出:

[[[17 59 14 23]
[27 59 6 12]
[43 16 27 17]] [[12 10 5 17]
[21 55 18 42]
[41 36 40 5]]]
np.median(c): 19.5

9.其他函数

numpy.ptp(a,axis=None)/a.ptp(a,axis=None)

计算指定轴上最大值与最小值的差,若不指定axis,默认为全部元素

例:

print("np.ptp(c):  ", np.ptp(c))
print("c.ptp(axis=1):\n", c.ptp(axis=1))

输出:

数组c:
[[[35 28 18 38]
[44 56 7 24]
[ 4 59 2 24]] [[55 56 5 27]
[18 44 22 1]
[ 3 30 20 43]]]
np.ptp(c): 58 # 59-1=58
c.ptp(axis=1):
[[40 31 16 14] # 44-4=40 59-28=31 ...
[52 26 17 42]]

numpy.percentile(a, q, axis=None)

  1. a:输入数组
  2. q:要计算的百分位数,在0~100之间
  3. axis:计算百分位数的轴

返回一个数,满足至少有q%的数小于或等于该值,且至少有(100-q)%的数大于或等于该值。

例:

d = np.random.randint(1, 40, (2, 5))
print("数组d:\n", d)
print("np.percentile(d, 40): ", np.percentile(d, 40))
print("np.percentile(d, 40, axis=1):\n", np.percentile(d, 40, axis=1))

输出:

数组d:
[[39 15 35 17 39]
[20 12 36 19 10]]
np.percentile(d, 40): 18.200000000000003
np.percentile(d, 40, axis=1):
[27.8 16.2]

很多函数参数列表中都有keepdims=Falsekeepdims是保持数组维度特性,如果keepdimsTrue,则返回仍会用多维数组[]包含

参考资料

奇客谷——NumPy统计函数

官方文档—统计函数

官方文档—排序、搜索和计数

NumPy——统计函数的更多相关文章

  1. NumPy 统计函数

    NumPy 统计函数 NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等. 函数说明如下: numpy.amin() 和 numpy.amax() numpy.a ...

  2. NumPy统计函数

    NumPy - 统计函数 NumPy 有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等. 函数说明如下: numpy.amin() 和 numpy.amax() 这些函 ...

  3. 14、numpy——统计函数

    NumPy 统计函数 NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等. 函数说明如下:(沿哪条轴执行,就是是最后结果的形式) 1.numpy.amin() 和 ...

  4. Lesson17——NumPy 统计函数

    NumPy 教程目录 1 NumPy 统计函数 NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等. 函数说明如下 1.1 统计 method descripti ...

  5. 吴裕雄--天生自然Numpy库学习笔记:NumPy 统计函数

    NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等. numpy.amin() 用于计算数组中的元素沿指定轴的最小值. numpy.amax() 用于计算数组中的 ...

  6. 数据分析 大数据之路 四 numpy 2

    NumPy 数学函数 NumPy 提供了标准的三角函数:sin().cos().tan(import numpy as np a = np.array([0,30,45,60,90])print (' ...

  7. numpy学习笔记(三)

    (1)numpy的位操作 序号         操作及描述 1.      bitwise_and 对数组元素执行位与操作 2.      bitwise_or 对数组元素执行位或操作 3.      ...

  8. NumPy教程目录

    NumPy Ndarray对象 NumPy数组属性 NumPy数据类型 NumPy数组创建例程 NumPy来自现有数据的数组 NumPy来自数值范围的数组 NumPy切片和索引 NumPy - 高级索 ...

  9. Python之Numpy详细教程

    NumPy - 简介 NumPy 是一个 Python 包. 它代表 “Numeric Python”. 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric,即 NumPy 的前 ...

随机推荐

  1. Java BigInteger详解

    BigInteger概述 可用于无限大的整数计算 所在的包 java.math.BigInteger; 构造函数 public BigInteger(String val) 成员函数 比较大小函数 p ...

  2. Windows和Linux下实现ssh免密登录

    ------------恢复内容开始------------ SSH是一种通讯协议,可以实现远程安全登录.可以通过如putty.MobaXterm等工具通过ssh安全登录到虚拟机进行操作. Opens ...

  3. 【SpringCloud】Eureka入门与原理

    为了开发效率高效和业务逻辑清晰,越来越多的项目采用分布式系统.分布式最重要的就是注册中心了.Eureka是SpringCloud原生提供的注册中心,来look一波吧. 超光速入门 服务端 引入依赖: ...

  4. Zabbix 监控sqlserver

    转:Zabbix 监控sqlserver 一:Zabbix监控sqlserver 方法一: 1.思路整理 1.在zabbix server上安装Freetds.unixODBC.unixODBC-de ...

  5. UFT场景恢复

    场景恢复: 在脚本运行中可能会出现一些非预期事件.错误.程序崩溃等情况,阻止脚本继续执行下去,在此情况下脚本可能暂停执行, 直到某些界面被操作之后才会继续执行下去,为了处理这一类事件因此存在场景恢复. ...

  6. python-django-redis拒绝连接问题解决_20191121

    今天安装fastdfs的时候,发现最好固定虚拟机的ip, 固定了ip之后,发现使用Windows中的pycharm连接redis的时候,总是拒绝连接,找了很多的办法都不行,有点慌, 但是不能慌,现在要 ...

  7. 从程序到系统:建立一个更智能的世界——记Joseph Sifakis“21世纪的计算”大会主题演讲

    Sifakis"21世纪的计算"大会主题演讲" title="从程序到系统:建立一个更智能的世界--记Joseph Sifakis"21世纪的计算&q ...

  8. baidumap 百度地图,实现多点之间的带方向路线图。

    通过lastVisitAt判断时间先后. 通过三角函数验证角度 再由baidumap 会制线段 绘制三角箭头 比较难看…… 测试个人 因为框架引用baidu 有各种问题失败,为最快实现,以此页作一个独 ...

  9. mybatis generator 使用教程(生成带注释的实体类)

    引言: 最近的一个项目,由于数据库表巨多,导致需要创建N多个java实体.dao.mapper.xml映射文件,如果均使用纯手工编写,无疑需要耗费大量时间和精力.于是上网学习了mybatis gene ...

  10. 查找openssl内存泄漏(代码)

    #include <stdio.h> #include <string.h> #include <openssl/bio.h> #include <opens ...