前面的内容源自于原文档,后面总结内容相当于读书笔记,如有谬误恳请指正。
统计相关
次序统计¶
计算最小值
numpy.amin(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue, where=np._NoValue])Return the minimum of an array or minimum along an axis.
【例】计算最小值

import numpy as np

x = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35]])
y = np.amin(x)
print(y) # 11

y = np.amin(x, axis=0)
print(y) # [11 12 13 14 15]

y = np.amin(x, axis=1)
print(y) # [11 16 21 26 31]
计算最大值
numpy.amax(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue, where=np._NoValue])Return the maximum of an array or maximum along an axis.
【例】计算最大值

import numpy as np

x = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35]])
y = np.amax(x)
print(y) # 35

y = np.amax(x, axis=0)
print(y) # [31 32 33 34 35]

y = np.amax(x, axis=1)
print(y) # [15 20 25 30 35]
计算极差
numpy.ptp(a, axis=None, out=None, keepdims=np._NoValue) Range of values (maximum - minimum) along an axis. The name of the function comes from the acronym for ‘peak to peak’.
【例】计算极差

import numpy as np

np.random.seed(20200623)
x = np.random.randint(0, 20, size=[4, 5])
print(x)

[[10 2 1 1 16]

[18 11 10 14 10]

[11 1 9 18 8]

[16 2 0 15 16]]

print(np.ptp(x)) # 18
print(np.ptp(x, axis=0)) # [ 8 10 10 17 8]
print(np.ptp(x, axis=1)) # [15 8 17 16]
计算分位数
numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation=‘linear’, keepdims=False) Compute the q-th percentile of the data along the specified axis. Returns the q-th percentile(s) of the array elements.
a:array,用来算分位数的对象,可以是多维的数组。
q:介于0-100的float,用来计算是几分位的参数,如四分之一位就是25,如要算两个位置的数就[25,75]。
axis:坐标轴的方向,一维的就不用考虑了,多维的就用这个调整计算的维度方向,取值范围0/1。
【例】计算分位数

import numpy as np

np.random.seed(20200623)
x = np.random.randint(0, 20, size=[4, 5])
print(x)

[[10 2 1 1 16]

[18 11 10 14 10]

[11 1 9 18 8]

[16 2 0 15 16]]

print(np.percentile(x, [25, 50]))

[ 2. 10.]

print(np.percentile(x, [25, 50], axis=0))

[[10.75 1.75 0.75 10.75 9.5 ]

[13.5 2. 5. 14.5 13. ]]

print(np.percentile(x, [25, 50], axis=1))

[[ 1. 10. 8. 2.]

[ 2. 11. 9. 15.]]

均值与方差
计算中位数
numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False) Compute the median along the specified axis. Returns the median of the array elements.
【例】计算中位数

import numpy as np

np.random.seed(20200623)
x = np.random.randint(0, 20, size=[4, 5])
print(x)

[[10 2 1 1 16]

[18 11 10 14 10]

[11 1 9 18 8]

[16 2 0 15 16]]

print(np.percentile(x, 50))
print(np.median(x))

10.0

print(np.percentile(x, 50, axis=0))
print(np.median(x, axis=0))

[13.5 2. 5. 14.5 13. ]

print(np.percentile(x, 50, axis=1))
print(np.median(x, axis=1))

[ 2. 11. 9. 15.]

计算平均值
numpy.mean(a[, axis=None, dtype=None, out=None, keepdims=np._NoValue)])Compute the arithmetic mean along the specified axis.
【例】计算平均值(沿轴的元素的总和除以元素的数量)。

import numpy as np

x = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35]])
y = np.mean(x)
print(y) # 23.0

y = np.mean(x, axis=0)
print(y) # [21. 22. 23. 24. 25.]

y = np.mean(x, axis=1)
print(y) # [13. 18. 23. 28. 33.]
计算加权平均值
numpy.average(a[, axis=None, weights=None, returned=False])Compute the weighted average along the specified axis.
mean和average都是计算均值的函数,在不指定权重的时候average和mean是一样的。指定权重后,average可以计算加权平均值。

【例】计算加权平均值(将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。)

import numpy as np

x = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35]])
y = np.average(x)
print(y) # 23.0

y = np.average(x, axis=0)
print(y) # [21. 22. 23. 24. 25.]

y = np.average(x, axis=1)
print(y) # [13. 18. 23. 28. 33.]

y = np.arange(1, 26).reshape([5, 5])
print(y)

[[ 1 2 3 4 5]

[ 6 7 8 9 10]

[11 12 13 14 15]

[16 17 18 19 20]

[21 22 23 24 25]]

z = np.average(x, weights=y)
print(z) # 27.0

z = np.average(x, axis=0, weights=y)
print(z)

[25.54545455 26.16666667 26.84615385 27.57142857 28.33333333]

z = np.average(x, axis=1, weights=y)
print(z)

[13.66666667 18.25 23.15384615 28.11111111 33.08695652]

计算方差
numpy.var(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])Compute the variance along the specified axis.
ddof=0:是“Delta Degrees of Freedom”,表示自由度的个数。
要注意方差和样本方差的无偏估计,方差公式中分母上是n;样本方差无偏估计公式中分母上是n-1(n为样本个数)。

证明的链接

【例】计算方差

import numpy as np

x = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35]])
y = np.var(x)
print(y) # 52.0
y = np.mean((x - np.mean(x)) ** 2)
print(y) # 52.0

y = np.var(x, ddof=1)
print(y) # 54.166666666666664
y = np.sum((x - np.mean(x)) ** 2) / (x.size - 1)
print(y) # 54.166666666666664

y = np.var(x, axis=0)
print(y) # [50. 50. 50. 50. 50.]

y = np.var(x, axis=1)
print(y) # [2. 2. 2. 2. 2.]
计算标准差
numpy.std(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])Compute the standard deviation along the specified axis.
标准差是一组数据平均值分散程度的一种度量,是方差的算术平方根。

【例】计算标准差

import numpy as np

x = np.array([[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25],
[26, 27, 28, 29, 30],
[31, 32, 33, 34, 35]])
y = np.std(x)
print(y) # 7.211102550927978
y = np.sqrt(np.var(x))
print(y) # 7.211102550927978

y = np.std(x, axis=0)
print(y)

[7.07106781 7.07106781 7.07106781 7.07106781 7.07106781]

y = np.std(x, axis=1)
print(y)

[1.41421356 1.41421356 1.41421356 1.41421356 1.41421356]

相关
计算协方差矩阵
task12%E7%BB%9F%E8%AE%A1%E7%9B%B8%E5%85%B3-%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5-%E6%95%B0%E5%AD%A6%E5%85%AC%E5%BC%8F.png

numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None) Estimate a covariance matrix, given data and weights.
【例】计算协方差矩阵

import numpy as np

x = [1, 2, 3, 4, 6]
y = [0, 2, 5, 6, 7]
print(np.cov(x)) # 3.7 #样本方差
print(np.cov(y)) # 8.5 #样本方差
print(np.cov(x, y))

[[3.7 5.25]

[5.25 8.5 ]]

print(np.var(x)) # 2.96 #方差
print(np.var(x, ddof=1)) # 3.7 #样本方差
print(np.var(y)) # 6.8 #方差
print(np.var(y, ddof=1)) # 8.5 #样本方差

z = np.mean((x - np.mean(x)) * (y - np.mean(y))) #协方差
print(z) # 4.2

z = np.sum((x - np.mean(x)) * (y - np.mean(y))) / (len(x) - 1) #样本协方差
print(z) # 5.25

z = np.dot(x - np.mean(x), y - np.mean(y)) / (len(x) - 1) #样本协方差
print(z) # 5.25
计算相关系数
numpy.corrcoef(x, y=None, rowvar=True, bias=np._NoValue, ddof=np._NoValue) Return Pearson product-moment correlation coefficients.
理解了np.cov()函数之后,很容易理解np.correlate(),二者参数几乎一模一样。

np.cov()描述的是两个向量协同变化的程度,它的取值可能非常大,也可能非常小,这就导致没法直观地衡量二者协同变化的程度。相关系数实际上是正则化的协方差,n个变量的相关系数形成一个n维方阵。

【例】计算相关系数

import numpy as np

np.random.seed(20200623)
x, y = np.random.randint(0, 20, size=(2, 4))

print(x) # [10 2 1 1]
print(y) # [16 18 11 10]

z = np.corrcoef(x, y)
print(z)

[[1. 0.48510096]

[0.48510096 1. ]]

a = np.dot(x - np.mean(x), y - np.mean(y))
b = np.sqrt(np.dot(x - np.mean(x), x - np.mean(x)))
c = np.sqrt(np.dot(y - np.mean(y), y - np.mean(y)))
print(a / (b * c)) # 0.4851009629263671
直方图
numpy.digitize(x, bins, right=False)Return the indices of the bins to which each value in input array belongs.
x:numpy数组
bins:一维单调数组,必须是升序或者降序
right:间隔是否包含最右
返回值:x在bins中的位置。
【例】

import numpy as np

x = np.array([0.2, 6.4, 3.0, 1.6])
bins = np.array([0.0, 1.0, 2.5, 4.0, 10.0])
inds = np.digitize(x, bins)
print(inds) # [1 4 3 2]
for n in range(x.size):
print(bins[inds[n] - 1], “<=”, x[n], “<”, bins[inds[n]])

0.0 <= 0.2 < 1.0

4.0 <= 6.4 < 10.0

2.5 <= 3.0 < 4.0

1.0 <= 1.6 < 2.5

【例】

import numpy as np

x = np.array([1.2, 10.0, 12.4, 15.5, 20.])
bins = np.array([0, 5, 10, 15, 20])
inds = np.digitize(x, bins, right=True)
print(inds) # [1 2 3 4 4]

inds = np.digitize(x, bins, right=False)
print(inds) # [1 3 3 4 5]
In [ ]:
原文:
https://github.com/datawhalechina/team-learning-program/blob/master/IntroductionToNumpy/task08%20%E7%BB%9F%E8%AE%A1%E7%9B%B8%E5%85%B3/12.%20%E7%BB%9F%E8%AE%A1%E7%9B%B8%E5%85%B3.ipynb

要点:
1、numpy.amin(a[,axis=none])
计算最小值,axis未定义计算矩阵最小值,axis=0计算每行最小值,axis=1每列最小值
2、numpy.amax(a[,axis=none])
计算最大值,axis未定义计算矩阵最大值,axis=0计算每行最大值,axis=1每列最大值
3、np.ptp(a,axis=noen)计算极差
axis未定义时计算矩阵极差
axis=0时计算行与行之间的极差,axis=1时计算列与列之间的极差
4、np.percentile(a,q,axis=none)
q:介于0-100之间的浮点数,用来计算是几分位的参数,可以是数组[25,50,75]
axis:坐标轴的方向,0时计算列组的分位数,1时计算行组的分位数
5、np.random.seed()种子值相同时随机数据保持不变,种子值不同时随机数据发生变化
6、np.median(a,[axis=none])计算中值
axis未定义时计算矩阵中值,axis=0时计算列中值,axis=1时计算行中值
7、np.mean(a,[,axis=none])计算平均值
axis未定义时计算所有数的平均值,axis=0沿列元素总和除以数量,axis=1时沿行的总和除以数量
8、np.average(a[,axis=none,wioghts=none])
将各数值乘以相应权数,然后加总求和得到总体值,再除以总的单位数 weight无定义时相当于求平均值,axis=0时沿列方向进行加权计算,axis=1时沿行方向进行加权计算
9、np.var(a,[,axis=none,ddof=0])
计算方差,ddof默认值时为0,表示计算方差,分母为n,ddof=1时表示计算样本方差,分母为n-1。axis=0表示计算列数据方差,axis=1表示计算行方差。
10、np.std(a[,axis=none])计算标准差,标准差是一组数据平均值分散程度的一种度量,是方差的算术平方根。axis=0表示列标准差。axis=1表示行标准差。
11、np.cov(m,y=None,ddof=none)计算协方差矩阵

cov(m)默认计算样本协方差,等于np.var(m,ddof=1)
cov(x,y)返回一个矩阵,计算的是x和y的样本协方差,即分母为n-1
12、np.corrcoef(x,y=none)相关系数,实际上是正则化的协方差,n个变量的相关系数形成一个n维的方阵
13、np.digitize(x,bins,right=False)返回x在bins中的位置
x:numpy数组
bins:单调数组,升序或降序
right:间否包含最右(true),间隔包含最左(false)

练习题

y=X β
对于简单线性回归,向量计法等同于image.png给定X跟y我们可以使用 NumPy 库解出β值,

In [4]:
from numpy . linalg import inv
from numpy import dot, transpose
X = [[1, 6, 2] , [1, 8, 1] , [1, 10, 0] , [1 , 14, 2] , [1, 18, 0]]
y = [[7] , [9] , [13] , [17.5] , [18]]
In [7]:
print(X)
print(y)
[[1, 6, 2], [1, 8, 1], [1, 10, 0], [1, 14, 2], [1, 18, 0]]
[[7], [9], [13], [17.5], [18]]
In [8]:
print(dot(inv(dot(transpose(X) , X)) , dot(transpose(X) , y)))
[[1.1875 ]
[1.01041667]
[0.39583333]]
NumPy 库也提供了一个最小二乘函数, 它能被用来更简洁地解出参数值

In [10]:
from numpy.linalg import lstsq
print(lstsq(X,y)[0])
[[1.1875 ]
[1.01041667]
[0.39583333]]
F:\dev\anaconda\envs\python35\lib\site-packages\ipykernel_launcher.py:2: FutureWarning: rcond parameter will change to the default of machine precision times max(M, N) where M and N are the input matrix dimensions.
To use the future default and silence this warning we advise to pass rcond=None, to keep using the old, explicitly pass rcond=-1.

计算给定数组中每行的最大值。

a = np.random.randint(1, 10, [5, 3])
【知识点:统计相关】

如何在二维numpy数组的每一行中找到最大值?
In [2]:
import numpy as np

np.random.seed(100)
a = np.random.randint(1, 10, [5, 3])
print(a)

[[9 9 4]

[8 8 1]

[5 3 6]

[3 3 3]

[2 1 9]]

b = np.amax(a, axis=1)
print(b)

[9 8 6 3 9]

[[9 9 4]
[8 8 1]
[5 3 6]
[3 3 3]
[2 1 9]]
[9 8 6 3 9]

numpy小组学习笔记三:统计相关相关推荐

  1. NumPy个人学习笔记【持续更新】

    NumPy个人学习笔记[持续更新] 来源:快速入门教程 - NumPy中文文档 目录 基础知识 数组的创建 打印数组 基本操作 通用函数 索引.切片和迭代 形状操作 更改数组的形状 将不同数组堆叠在一 ...

  2. SurfaceFlinger学习笔记(三)之SurfaceFlinger进程

    概述 本系列是基于android Q 即android10 SurfaceFlinger学习笔记(一)应用启动流程 SurfaceFlinger学习笔记(二)之Surface SurfaceFling ...

  3. MySQL学习笔记(三)查询

    写在前面:本篇为作者自学总结,学习内容为课堂所学和网络学习笔记汇总,对于内容引用部分在文中和文末注明. 文章仅供参考,如需深入了解,请查阅MySQL参考手册.附上下载链接: 链接:https://pa ...

  4. Matplotlib 和numpy 基础学习笔记

    Matplotlib 和 numpy 基础学习笔记 一.numpy.scipy.matplotlib简介及环境安装 NumPy 通常与 SciPy(Scientific Python)和 Matplo ...

  5. Hive学习笔记三之函数操作

    文章目录 5 函数 5.1 系统内置函数 5.2 常用内置函数 5.2.1 空字段赋值 5.2.2 CASE WHEN THEN ELSE END(类似于java中的switch case) 5.2. ...

  6. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  7. 吴恩达《机器学习》学习笔记十——神经网络相关(2)

    吴恩达<机器学习>学习笔记十--神经网络相关(2) 一. 代价函数 二. 反向传播算法 三. 理解反向传播算法 四. 梯度检测 五. 随机初始化 1.全部初始化为0的问题 2.随机初始化的 ...

  8. 吴恩达《机器学习》学习笔记九——神经网络相关(1)

    吴恩达<机器学习>学习笔记九--神经网络相关(1) 一. 非线性假设的问题 二. 神经网络相关知识 1.神经网络的大致历史 2.神经网络的表示 3.前向传播:向量化表示 三. 例子与直觉理 ...

  9. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

最新文章

  1. docker 启动容器_crontab入门二:定时启动docker容器并启动容器内部脚本
  2. 2016 7 25 链表
  3. 没错,Java 人的下半场才刚开始!
  4. caffe学习笔记(2)
  5. java jacoco覆盖率报错_接口测试代码覆盖率(jacoco)方案分享
  6. Hive 内嵌模式安装指导
  7. mfc实验报告心得体会_mfc实验报告.doc
  8. HTML中的select只读
  9. (day9)357. 计算各个位数不同的数字个数
  10. 4:JAVA UUID 生成
  11. 生成式模型和判别式模型的区别
  12. 高通功耗调试17之TLOC DEAMON导致待机/亮屏电流异常问题
  13. Mysql中从零点到当前时刻的SQL判断
  14. python 折线图平滑_使用matplotlib的平滑折线图
  15. 6.2 不一致数据的转换
  16. excel怎么设置选项按钮?
  17. 最小化安装 Rocky Linux(CentOS的传承,同创始人发起)
  18. js读取注册表然后打开指定程序
  19. vmware部署优麒麟系统
  20. 面试题31:JS中判断是数组的四种方法

热门文章

  1. 用scrapy写爬虫(一)快速上手
  2. 【LaTeX】LaTeX和Inkscape的一些使用技巧
  3. dm3730 android,DM3730/AM3715处理器开发板
  4. telerik学习记录-RadAjaxPanel
  5. Epson机械手程序开发(3)机械手报错时的处理
  6. Squeeze-and-Excitation Networks论文翻译——中英文对照
  7. Python:视频拆分成一帧一帧的图片
  8. GBase 8a视频配套联系
  9. Android studio:真机调试vivo X21手机安装失败
  10. 中国医科大学2021年9月《药事管理学》作业考核试题