Python NumPy计算方差、标准差与协方差详解

Oliver
Oliver
发布时间:2026-10-13| 5人浏览过
原创

本文介绍如何使用Python的NumPy库计算方差、标准差、样本标准差及协方差。通过具体代码示例,演示np.var()、np.std()及np.cov()函数的用法,重点解析ddof参数对样本标准差的影响,并对比不同统计场景下的计算差异。

NumPy库功能强大,本文简要介绍如何利用NumPy进行方差、标准差、样本标准差以及协方差的计算。

variance:方差

方差(Variance)是概率论中的基础概念,由统计学家罗纳德·费雪于1918年首次提出。它用于衡量数据的离散程度,反映变量与其数学期望(均值)之间的偏离情况。即使两组数据具有相同的均值,其标准差也可能不同,通过比较标准差的大小可以更直观地评估数据的偏离程度。

计算示例:给定一组数据1、2、3、4,如何计算其方差?

具体计算步骤如下:

均值 = (1+2+3+4)/4 = 2.5 方差 = ((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 + (4-2.5)^2)/4 = (2.25+0.25+0.25+2.25)/4 = 1.25

在Python的NumPy库中,使用var函数即可求解,代码及执行结果如下:

liumiaocn:tmp liumiao$ cat np-5.py 
#!/usr/local/bin/python
import numpy as np
arr = np.array([1,2,3,4])
print("variance of [1,2,3,4]:", np.var(arr))
liumiaocn:tmp liumiao$ python np-5.py 
('variance of [1,2,3,4]:', 1.25)
liumiaocn:tmp liumiao$ 

standard deviation:标准差

标准差是方差的平方根,因此:

计算示例:给定一组数据1、2、3、4,如何计算其标准差?

计算过程很简单,对方差1.25进行开方运算即可得到约1.118。

使用NumPy库中的std函数可以非常简单地求解,代码及执行结果如下:

liumiaocn:tmp liumiao$ cat np-6.py 
#!/usr/local/bin/python
import numpy as np
arr = np.array([1,2,3,4])
print("variance of [1,2,3,4]:", np.var(arr))
print("sqrt of variance [1,2,3,4]:",np.sqrt(np.var(arr)))
print("standard deviation: np.std()", np.std(arr))
liumiaocn:tmp liumiao$ python np-6.py 
('variance of [1,2,3,4]:', 1.25)
('sqrt of variance [1,2,3,4]:', 1.118033988749895)
('standard deviation: np.std()', 1.118033988749895)
liumiaocn:tmp liumiao$ 

sample standard deviation:样本标准差

标准差通常针对总体样本进行求解。如果涉及抽样,则需要使用样本标准差。这同样是一个开方运算,但对象不再是方差,而是各个数据与均值之差的平方和的平均值。简单来说,总体方差除以的是N,而样本标准差对应的方差除以的是N-1。

计算示例:给定一组数据1、2、3、4,如何计算其样本标准差? 计算步骤如下: 均值 = (1+2+3+4)/4 = 2.5 样本标准差对应的方差 = ((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 + (4-2.5)^2)/3 = (2.25+0.25+0.25+2.25)/3 = 5/3 对5/3进行开方运算,得到的样本标准差约为1.29。

同样可以使用NumPy的std函数实现,只需将可选参数ddof设置为1即可,代码及执行结果如下:

liumiaocn:tmp liumiao$ cat np-7.py 
#!/usr/local/bin/python
import numpy as np
arr = np.array([1,2,3,4])
print("sample standard deviation: np.std()", np.std(arr, ddof=1))
liumiaocn:tmp liumiao$ python np-7.py 
('sample standard deviation: np.std()', 1.2909944487358056)
liumiaocn:tmp liumiao$

注意:Matlab中的std函数实际计算的是样本标准差。这一点需要特别注意,如果你的代码是从Matlab复制过来的,请确认其实际意义是总体标准差还是样本标准差。

Covariance:协方差

协方差与方差较为接近,区别在于分母为N-1。

计算示例:给定一组数据1、2、3、4,如何计算其协方差?

具体计算步骤如下:

均值 = (1+2+3+4)/4 = 2.5 方差 = ((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 + (4-2.5)^2)/(4-1) = (2.25+0.25+0.25+2.25)/3 = 1.66667

使用NumPy的cov函数即可简单求出,代码及执行结果如下:

liumiaocn:tmp liumiao$ cat np-8.py 
#!/usr/local/bin/python
import numpy as np
arr = np.array([1,2,3,4])
print("Covariance: np.cov()", np.cov(arr))
liumiaocn:tmp liumiao$ python np-8.py 
('Covariance: np.cov()', array(1.66666667))
liumiaocn:tmp liumiao$

总结

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对本站的支持。如果你想了解更多相关内容请查看下面相关链接

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。