1 介绍
1.1 Importing from SciPy
关于 Python 中公开和不公开的一些广泛理解的规则是:
- 名称以下划线开头的方法/函数/类和模块属性是私有的。
- 如果类名以前导下划线开头,则其成员都不是公共的,无论它们是否以前导下划线开头。
- 如果包中的模块名称以前导下划线开头,则其成员都不是公共的,无论它们是否以前导下划线开头。
- 如果一个模块或包定义了
__all__
,则它权威地定义了公共接口。 - 如果模块或包没有定义
__all__
,那么所有不以前导下划线开头的名称都是公共的。
Note:
阅读上述指南可以得出结论,每个私有模块或对象都以下划线开头。下划线的存在确实将某些内容标记为私有,但没有下划线不会将某些内容标记为公开。
2 统计函数 ( scipy.stats)
该模块包含大量概率分布、汇总和频率统计、相关函数和统计检验、掩蔽统计、核密度估计、准蒙特卡洛函数等。
统计是一个非常大的领域,有些主题超出了 SciPy 的范围,并且被其他包涵盖。一些最重要的是:
2.1 概率分布
每一个单变量分布都是 rv_continuous
子类的一个实例。(rv_discrete
针对离散分布)
类 | 描述 |
---|
rv_continuous([momtype, a, b, xtol, …]) | 用于子类化的通用连续随机变量类。 |
rv_discrete([a, b, name, badvalue, …]) | 用于子类化的通用离散随机变量类。 |
rv_histogram(histogram, *args, **kwargs) | 生成由直方图给出的分布。 |
2.1.1 连续分布
类 | 描述 |
---|
alpha | 一个 alpha 连续随机变量。 |
anglit | 一个有角度的连续随机变量。 |
arcsine | 反正弦连续随机变量。 |
argus | 阿格斯分布 |
beta | 一个 beta 连续随机变量。 |
betaprime | 一个 beta 素数连续随机变量。 |
bradford | Bradford 连续随机变量。 |
burr | Burr (Type III) 连续随机变量。 |
burr12 | Burr (Type XII) 连续随机变量。 |
cauchy | 一个柯西连续随机变量。 |
chi | 一个 chi 连续随机变量。 |
chi2 | 卡方连续随机变量。 |
cosine | 一个余弦连续随机变量。 |
crystalball | 水晶球分布 |
dgamma | 双伽马连续随机变量。 |
dweibull | 双 Weibull 连续随机变量。 |
erlang | Erlang 连续随机变量。 |
expon | 指数连续随机变量。 |
exponnorm | 一个指数修正的正态连续随机变量。 |
exponweib | 取幂的 Weibull 连续随机变量。 |
exponpow | 指数幂连续随机变量。 |
f | 一个 F 连续随机变量。 |
fatiguelife | 疲劳寿命 (Birnbaum-Saunders) 连续随机变量。 |
fisk | Fisk 连续随机变量。 |
foldcauchy | 一个折叠的柯西连续随机变量。 |
foldnorm | 折叠正态连续随机变量。 |
genlogistic | 广义逻辑连续随机变量。 |
gennorm | 广义正态连续随机变量。 |
genpareto | 广义帕累托连续随机变量。 |
genexpon | 广义指数连续随机变量。 |
genextreme | 广义极值连续随机变量。 |
gausshyper | 高斯超几何连续随机变量。 |
gamma | 伽马连续随机变量。 |
gengamma | 广义伽马连续随机变量。 |
genhalflogistic | 一个广义的半逻辑连续随机变量。 |
genhyperbolic | 广义双曲连续随机变量。 |
geninvgauss | 广义逆高斯连续随机变量。 |
gilbrat | Gilbrat 连续随机变量。 |
gompertz | Gompertz(或截断的 Gumbel)连续随机变量。 |
gumbel_r | 右偏 Gumbel 连续随机变量。 |
gumbel_l | 左偏 Gumbel 连续随机变量。 |
halfcauchy | 半柯西连续随机变量。 |
halflogistic | 半逻辑连续随机变量。 |
halfnorm | 半正态连续随机变量。 |
halfgennorm | 广义正态连续随机变量的上半部分。 |
hypsecant | 双曲正割连续随机变量。 |
invgamma | 倒置伽马连续随机变量。 |
invgauss | 逆高斯连续随机变量。 |
invweibull | 一个倒置 Weibull 连续随机变量。 |
johnsonsb | Johnson SB 连续随机变量。 |
johnsonsu | Johnson SU 连续随机变量。 |
kappa4 | Kappa 4 参数分布。 |
t | 学生 t 连续随机变量。 |
2.1.1.1 scipy.stats.t
学生 t 连续随机变量。
t 分布的密度函数为:

from scipy.stats import t
stats.t
2.1.2 多元分布
类 | 描述 |
---|
multivariate_normal | 多元正态随机变量。 |
matrix_normal | 矩阵正态随机变量。 |
dirichlet | 狄利克雷随机变量。 |
wishart | Wishart 随机变量。 |
invwishart | 逆 Wishart 随机变量。 |
multinomial | 多项式随机变量。 |
special_ortho_group | 矩阵值 SO(N) 随机变量。 |
ortho_group | 矩阵值 O(N) 随机变量。 |
unitary_group | 矩阵值 U(N) 随机变量。 |
random_correlation | 随机相关矩阵。 |
multivariate_t | 多元 t 分布随机变量。 |
multivariate_hypergeom | 多元超几何随机变量。 |
2.1.3 离散分布
类 | 描述 |
---|
bernoulli | 伯努利离散随机变量。 |
betabinom | 一个 beta-二项式离散随机变量。 |
binom | 二项式离散随机变量。 |
boltzmann | 玻尔兹曼(截断离散指数)随机变量。 |
dlaplace | 拉普拉斯离散随机变量。 |
geom | 几何离散随机变量。 |
hypergeom | 超几何离散随机变量。 |
logser | 一个对数(Log-Series,Series)离散随机变量。 |
nbinom | 负二项式离散随机变量。 |
nchypergeom_fisher | Fisher 的非中心超几何离散随机变量。 |
nchypergeom_wallenius | Wallenius 的非中心超几何离散随机变量。 |
nhypergeom | 负超几何离散随机变量。 |
planck | 普朗克离散指数随机变量。 |
poisson | 泊松离散随机变量。 |
randint | 一个均匀的离散随机变量。 |
skellam | Skellam 离散随机变量。 |
yulesimon | Yule-Simon 离散随机变量。 |
zipf | Zipf (Zeta) 离散随机变量。 |
zipfian | Zipfian 离散随机变量。 |
2.2 汇总统计
下面给出统计函数的概述。其中许多函数都有类似的版本在 scipy.stats.mstats
中,适用于掩码数组。
类 | 描述 |
---|
describe(a[, axis, ddof, bias, nan_policy]) | 计算传入数组的几个描述性统计数据。 |
gmean(a[, axis, dtype, weights]) | 计算沿指定轴的几何平均值。 |
hmean(a[, axis, dtype]) | 计算沿指定轴的调和平均值。 |
kurtosis(a[, axis, fisher, bias, nan_policy]) | 计算数据集的峰度(Fisher 或 Pearson)。 |
mode(a[, axis, nan_policy]) | 返回传入数组中模态(最常见)值的数组。 |
moment(a[, moment, axis, nan_policy]) | 计算样本均值的第 n 个矩。 |
skew(a[, axis, bias, nan_policy]) | 计算数据集的样本偏度。 |
kstat(data[, n]) | 返回第 n 个 k 统计量(到目前为止 1<=n<=4)。 |
kstatvar(data[, n]) | 返回 k 统计量方差的无偏估计量。 |
2.3 频率统计
类 | 描述 |
---|
cumfreq(a[, numbins, defaultreallimits, weights]) | 使用 histogram 函数返回累积频率直方图。 |
percentileofscore(a, score[, kind]) | 计算分数相对于分数列表的百分位排名。 |
scoreatpercentile(a, per[, limit, …]) | 计算输入序列给定百分位数的分数。 |
relfreq(a[, numbins, defaultreallimits, weights]) | 使用 histogram 函数返回相对频率直方图。 |
binned_statistic(x, values[, statistic, …]) | 计算一组或多组数据的分箱统计量。 |
binned_statistic_2d(x, y, values[, …]) | 计算一组或多组数据的二维分箱统计量。 |
binned_statistic_dd(sample, values[, …]) | 计算一组数据的多维分箱统计量。 |
2.4 相关函数
类 | 描述 |
---|
f_oneway(*args[, axis]) | 执行单向方差分析。 |
alexandergovern(*args[, nan_policy]) | 执行 Alexander Govern 测试。 |
pearsonr(x, y) | 用于检验非相关性的 Pearson 相关系数和 p 值。 |
linregress(x[, y, alternative]) | 计算两组测量值的线性最小二乘回归。 |
2.4.1 scipy.stats.linregress
计算两组测量值的线性最小二乘回归。
from scipy import stats
stats.linregress(x, y=None, alternative='two-sided')
'''参数
x, y: array_like
两组测量值。两个数组的长度应该相同。如果只给出了x(并且y=None),那么它必须是一个二维数组,其中一维的长度为2。然后通过沿 length-2 维分
割数组找到两组测量值。
在y=None且x是2x2数组的情况下,linregress(x) 等价于 linregress(x[0], x[1])。
alternative: {‘two-sided’, ‘less’, ‘greater’}, optional
‘two-sided’: 回归线的斜率是非零的。
‘less’: 回归线的斜率小于零。
‘greater’: 回归线的斜率大于零。
'''
'''返回
LinregressResult 实例。
返回值是一个具有以下属性的对象:
slope: float
回归线的斜率。
intercept: float
回归线的截距。
rvalue: float
皮尔逊相关系数。rvalue 的平方等于决定系数。
pvalue: float
对零假设为斜率为零的假设检验的p值,使用带有检验统计量t分布的Wald检验。
stderr: float
估计的斜率(梯度)的标准误差,在残差正态性的假设下。
intercept_stderr: float
估计的截距的标准误差,在残差正态的假设下。
'''
2.5 统计检验
类 | 描述 |
---|
ttest_1samp(a, popmean[, axis, nan_policy, …]) | 计算一组分数的平均值的 T 检验。 |
ttest_ind(a, b[, axis, equal_var, …]) | 计算两个独立分数样本的平均值的 T 检验。 |
ttest_ind_from_stats(mean1, std1, nobs1, …) | 来自描述性统计的两个独立样本的平均值的 T 检验。 |
2.6 类蒙特卡洛
2.6.1 类蒙特卡洛子模块 ( scipy.stats.qmc)
2.6.1.1 类蒙特卡洛
2.6.1.1.1 Engines
- scipy.stats.qmc.QMCEngine
- scipy.stats.qmc.Sobol
- scipy.stats.qmc.Halton
- scipy.stats.qmc.LatinHypercube
- scipy.stats.qmc.MultinomialQMC
- scipy.stats.qmc.MultivariateNormalQMC
2.6.1.1.2 Helpers
- scipy.stats.qmc.discrepancy
- scipy.stats.qmc.update_discrepancy
- scipy.stats.qmc.scale
2.6.1.2 类蒙特卡洛介绍
2.7 掩码统计函数
2.8 其他统计功能
2.8.1 转换
类 | 描述 |
---|
boxcox(x[, lmbda, alpha, optimizer]) | 返回由 Box-Cox 幂变换变换的数据集。 |
boxcox_normmax(x[, brack, method, optimizer]) | 计算输入数据的最佳 Box-Cox 变换参数。 |
boxcox_llf(lmb, data) | boxcox 对数似然函数。 |
2.8.2 统计距离
类 | 描述 |
---|
wasserstein_distance(u_values, v_values[, …]) | 计算两个一维分布之间的第一个 Wasserstein 距离。 |
energy_distance(u_values, v_values[, …]) | 计算两个一维分布之间的能量距离。 |
2.8.3 采样
2.8.4 随机变量生成 / CDF 反转
2.8.5 循环统计函数
2.8.6 列联表函数
2.8.7 绘图测试
2.8.8 单变量和多变量核密度估计
2.8.9 scipy.stats
中使用的 Warnings / Errors
3 特殊函数(scipy.special)
以下几乎所有函数都是通用函数,并且遵循广播和自动数组循环规则。
3.1 错误处理
3.2 可用功能
3.2.1 Airy 函数
类 | 描述 |
---|
airy(z) | Airy 函数及其衍生工具。 |
airye(z) | 指数缩放的 Airy 函数及其导数。 |
3.2.2 椭圆函数和积分
3.2.3 贝塞尔函数
类 | 描述 |
---|
jv(v, z) | 第一类实阶复数参数的贝塞尔函数。 |
3.2.3.1 贝塞尔函数的零点
3.2.3.2 常见贝塞尔函数的更快版本
3.2.3.3 贝塞尔函数的积分
3.2.3.4 贝塞尔函数的导数
3.2.3.5 球面贝塞尔函数
3.2.3.6 Riccati-Bessel 函数
3.2.4 斯特鲁维函数
3.2.5 原始统计函数
类 | 描述 |
---|
bdtr(k, n, p) | 二项分布累积分布函数。 |
3.2.6 信息论函数
3.2.7 Gamma 及其相关函数
3.2.7.1 scipy.special.gamma
伽马函数。

伽马函数常被称为广义阶乘。因为对于自然数 n,
更一般地,对于复数 z,它满足递归关系

from scipy.special import gamma
gamma(z)
'''参数
z: array_like
实数或复数。
'''
'''返回
scalar or ndarray
伽马函数的值。
'''
3.2.8 误差函数和菲涅耳积分
3.2.9 勒让德函数
3.2.10 椭球谐波
3.2.11 正交多项式
3.2.12 超几何函数
3.2.13 抛物柱面函数
3.2.14 Mathieu 及其相关函数
3.2.15 球面波函数
3.2.16 开尔文函数
3.2.17 组合
类 | 描述 |
---|
comb(N, k[, exact, repetition]) | 从 N 个事物中一次取 k 个的组合数。 |
perm(N, k[, exact]) | 从 N 个事物中一次取 k 个的排列数。 |
3.2.18 Lambert W 及其相关函数
3.2.19 其他特殊函数
3.2.20 方便使用函数
类 | 描述 |
---|
cbrt(x) | x的元素立方根。 |
exp10(x) | 10**x按元素计算。 |
exp2(x) | 2**x按元素计算。 |
3.1 scipy.special.gamma