Lesson17——NumPy 统计函数
NumPy 教程目录
1 NumPy 统计函数
NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等。 函数说明如下
1.1 统计
| method | description |
|---|---|
| amin(a[, axis, out, keepdims, initial, where]) | 返回数组的最小值或沿轴的最小值。 |
| amax(a[, axis, out, keepdims, initial, where]) | 返回数组的最大值或沿轴的最大值。 |
| nanmin(a[, axis, out, keepdims]) | 返回数组的最小值或沿轴的最小值,忽略任何 NaN。 |
| nanmax(a[, axis, out, keepdims]) | 返回数组的最大值或沿轴的最大值,忽略任何 NaN。 |
| ptp(a[, axis, out, keepdims]) | 沿轴的值范围(最大值 - 最小值)。 |
| percentile(a, q[, axis, out, …]) | 沿指定轴计算数据的第 q 个百分位数。 |
| nanpercentile(a, q[, axis, out, …]) | 计算沿指定轴的数据的第 q 个百分位数,同时忽略 nan 值。 |
| quantile(a, q[, axis, out, overwrite_input, …]) | 沿指定轴计算数据的第 q 个分位数。 |
| nanquantile(a, q[, axis, out, …]) | 沿指定轴计算数据的第 q 个分位数,同时忽略 nan 值。 |
1.2 平均值和方差
| method | description |
|---|---|
| median(a[, axis, out, overwrite_input, keepdims]) | 计算沿指定轴的中位数。 |
| average(a[, axis, weights, returned]) | 计算沿指定轴的加权平均值。 |
| mean(a[, axis, dtype, out, keepdims]) | 计算沿指定轴的算术平均值。 |
| std(a[, axis, dtype, out, ddof, keepdims]) | 计算沿指定轴的标准差。 |
| var(a[, axis, dtype, out, ddof, keepdims]) | 计算沿指定轴的方差。 |
| nanmedian(a[, axis, out, overwrite_input, …]) | 计算沿指定轴的中位数,同时忽略 NaN。 |
| nanmean(a[, axis, dtype, out, keepdims]) | 计算沿指定轴的算术平均值,忽略 NaN。 |
| nanstd(a[, axis, dtype, out, ddof, keepdims]) | 计算沿指定轴的标准差,同时忽略 NaN。 |
| nanvar(a[, axis, dtype, out, ddof, keepdims]) | 计算沿指定轴的方差,同时忽略 NaN。 |
1.3 相关系数
| method | description |
|---|---|
| corrcoef(x[, y, rowvar, bias, ddof]) | 返回 Pearson 积矩相关系数。 |
| correlate(a, v[, mode]) | 两个一维序列的互相关。 |
| cov(m[, y, rowvar, bias, ddof, fweights, …]) | 给定数据和权重,估计协方差矩阵。 |
1.4 直方图
| method | description |
|---|---|
| histogram(a[, bins, range, normed, weights, …]) | 计算一组数据的直方图。 |
| histogram2d(x, y[, bins, range, normed, …]) | 计算两个数据样本的二维直方图。 |
| histogramdd(sample[, bins, range, normed, …]) | 计算一些数据的多维直方图。 |
| bincount(x[, weights, minlength]) | 计算非负整数数组中每个值的出现次数。 |
| histogram_bin_edges(a[, bins, range, weights]) | 仅计算直方图函数使用的 bin 边缘的函数。 |
| digitize(x, bins[, right]) | 返回输入数组中每个值所属的 bin 的索引。 |
2 统计例子
2.1 numpy.amin()
numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
Example:
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print(a)
print(np.amin(a)) #所有元素的最小值
print(np.amin(a,axis=0)) #每列元素的最小值
print(np.amin(a,axis=1)) #每行元素的最小值
"""
[[3 7 5]
[8 4 3]
[2 4 9]] 2 [2 4 3] [3 3 2]
"""
2.2 numpy.amax()
numpy.amax() 用于计算数组中的元素沿指定轴的最大值。
Example:
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print(a)
print(np.amax(a)) #所有元素的最大值
print(np.amax(a,axis=0)) #每列元素的最大值
print(np.amax(a,axis=1)) #每行元素的最大值
"""
[[3 7 5]
[8 4 3]
[2 4 9]]
9
[8 7 9]
[7 8 9]
"""
2.3 numpy.nanmin()
numpy.nanmin(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>) 返回数组的最小值或沿轴的最小值,忽略任何 NaN。 当遇到所有 NaN 切片时,会引发 RuntimeWarning 并为该切片返回 Nan。
Example:
a = np.array([[1, 2], [3, np.nan],[3, -np.nan]])
print(np.amin(a))
print(np.nanmin(a))
print(np.nanmin(a,axis=0))
print(np.nanmin(a,axis=1))
"""
nan
1.0
[1. 2.]
[1. 3. 3.]
"""
2.4 numpy.nanmax()
numpy.nanmax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>) 返回数组的最大值或沿轴的最大值,忽略任何 NaN。 当遇到所有 NaN 切片时,会引发 RuntimeWarning 并为该切片返回 NaN。
Example:
a = np.array([[1, 2], [3, np.nan],[3, -np.nan]])
print(np.amax(a))
print(np.nanmax(a))
print(np.nanmax(a,axis=0))
print(np.nanmax(a,axis=1))
"""
nan
3.0
[3. 2.]
[2. 3. 3.]
"""
2.5 numpy.ptp()
numpy.ptp(a, axis=None, out=None, keepdims=<no value>) 沿轴的值范围(最大值 - 最小值)。
Example:
x = np.array([[4, 9, 2, 10],
[6, 9, 7, 12]])
print(np.ptp(x))
print(np.ptp(x,axis=0))
print(np.ptp(x,axis=1))
"""
10
[2 0 5 2]
[8 6]
"""
2.6 numpy.percentile()
numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=False, *, interpolation=None) 百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。
参数说明:
- a: 输入数组
- q:要计算的百分位数,在 0 ~ 100 之间
- axis: 沿着它计算百分位数的轴
首先明确百分位数:
第 $q$ 个百分位数是这样一个值,它使得至少有 q% 的数据项小于或等于这个值,且至少有 (100-q)% 的数据项大于或等于这个值。
举个例子:高等院校的入学考试成绩经常以百分位数的形式报告。比如,假设某个考生在入学考试中的语文部分的原始分数为 54 分。相对于参加同一考试的其他学生来说,他的成绩如何并不容易知道。但是如果原始分数54分恰好对应的是第70百分位数,我们就能知道大约70%的学生的考分比他低,而约30%的学生考分比他高。
Example:
a = np.array([[10, 7, 4], [3, 2, 1]])
print ('我们的数组是:')
print (a)
print ('调用 percentile() 函数:')
# 50% 的分位数,就是 a 里排序之后的中位数
print (np.percentile(a, 50))
# axis 为 0,在纵列上求
print (np.percentile(a, 50, axis=0))
# axis 为 1,在横行上求
print (np.percentile(a, 50, axis=1))
# 保持维度不变
print (np.percentile(a, 50, axis=1, keepdims=True))
"""
我们的数组是:
[[10 7 4]
[ 3 2 1]]
调用 percentile() 函数:
3.5
[6.5 4.5 2.5]
[7. 2.]
[[7.]
[2.]]
"""
2.7 numpy.quantile()
numpy.quantile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=False, *, interpolation=None) 沿指定轴计算数据的第 q 个分位数。
Note
给定长度为 N 的向量V,V的第 q 个分位数是从最小到最大的方式的值 q 如果归一化排名与 q 的位置完全不匹配,则两个最近邻居的值和距离以及内插参数将确定分位数。如果 q = 0.5,此函数与中位数相同;如果 q = 0.0,此函数与最小值相同;如果 q = 1.0,则与最大值相同.
Example:
>>> a = np.array([[10, 7, 4], [3, 2, 1]])
>>> a
array([[10, 7, 4],
[ 3, 2, 1]])
>>> np.quantile(a, 0.5)
3.5
>>> np.quantile(a, 0.5, axis=0)
array([6.5, 4.5, 2.5])
>>> np.quantile(a, 0.5, axis=1)
array([7., 2.])
>>> np.quantile(a, 0.5, axis=1, keepdims=True)
array([[7.],
[2.]])
>>> m = np.quantile(a, 0.5, axis=0)
>>> out = np.zeros_like(m)
>>> np.quantile(a, 0.5, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
>>> b = a.copy()
>>> np.quantile(b, 0.5, axis=1, overwrite_input=True)
array([7., 2.])
>>> assert not np.all(a == b)
3 平均值和方差
3.1 numpy.median()
numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False) 计算沿指定轴的中位数。
Example:
a = np.array([[10, 7, 4], [3, 2, 1]])
print(a)
print(np.median(a)) #所有元素的中位数
print(np.median(a, axis=0))
print(np.median(a, axis=1))
"""
[[10 7 4]
[ 3 2 1]]
3.5
[6.5 4.5 2.5]
[7., 2.]
"""
Example:
m = np.median(a, axis=0)
out = np.zeros_like(m)
print(np.median(a, axis=0, out=m))
print(m)
b = a.copy()
print(np.median(b, axis=1, overwrite_input=True))
assert not np.all(a==b)
b = a.copy()
print(np.median(b, axis=None, overwrite_input=True))
assert not np.all(a==b)
"""
[6.5 4.5 2.5]
[6.5 4.5 2.5]
[7. 2.]
3.5
"""
3.2 numpy.average()
numpy.average(a, axis=None, weights=None, returned=False) 计算沿指定轴的加权平均值。
计算方式为:avg = sum(a * weights) / sum(weights)
Example:
data = np.arange(1, 5)
print(data)
print(np.average(data))
print(np.average(np.arange(1, 11), weights=np.arange(10, 0, -1)))
"""
[1 2 3 4]
2.5
4.0
"""
Example:
data = np.arange(6).reshape((3,2))
print(data)
print(np.average(data, axis=1, weights=[1./4, 3./4]))
"""
[[0 1]
[2 3]
[4 5]]
[0.75 2.75 4.75]
"""
3.3 numpy.mean()
numpy.mean(a, axis=None, dtype=None, out=None, keepdims=<no value>, *, where=<no value>) 计算沿指定轴的算术平均值。
Example:
a = np.array([[1, 2], [3, 4]])
print(np.mean(a))
print(np.mean(a, axis=0))
print(np.mean(a, axis=1))
"""
2.5
[2. 3.]
[1.5 3.5]
"""
3.4 numpy.std()
numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, *, where=<no value>) 计算沿指定轴的标准差。
Example:
a = np.array([[1, 2], [3, 4]])
print( np.std(a))
print(np.std(a, axis=0))
print(np.std(a, axis=1))
"""
1.118033988749895
[1. 1.]
[0.5 0.5]
"""
3.5 numpy.var()
numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, *, where=<no value>) 计算沿指定轴的方差。
Example:
a = np.array([[1, 2], [3, 4]])
print( np.var(a))
print(np.var(a, axis=0))
print(np.var(a, axis=1))
"""
1.25
[1. 1.]
[0.25 0.25]
"""
4 相关系数
4.1 numpy.corrcoef()
numpy.corrcoef(x, y=None, rowvar=True, bias=<no value>, ddof=<no value>, *, dtype=None) 返回 Pearson 积矩相关系数。
Example:
rng = np.random.default_rng(seed=42)
xarr = rng.random((3, 3))
print(xarr)
"""
[[0.77395605 0.43887844 0.85859792]
[0.69736803 0.09417735 0.97562235]
[0.7611397 0.78606431 0.12811363]]
"""
R1 = np.corrcoef(xarr)
print(R1)
"""
[[ 1. 0.99256089 -0.68080986]
[ 0.99256089 1. -0.76492172]
[-0.68080986 -0.76492172 1. ]]
"""
4.2 numpy.correlate()
numpy.correlate(a, v, mode='valid') 两个一维序列的互相关。
Example:
print(np.correlate([1, 2, 3], [0, 1, 0.5]))
print(np.correlate([1, 2, 3], [0, 1, 0.5], "same"))
print(np.correlate([1, 2, 3], [0, 1, 0.5], "full"))
"""
[3.5]
[2. 3.5 3. ]
[0.5 2. 3.5 3. 0. ]
"""
4.3 numpy.cov()
numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None, *, dtype=None) 给定数据和权重,估计协方差矩阵。
Example:
m = np.arange(10, dtype=np.float64)
f = np.arange(10) * 2
a = np.arange(10) ** 2.
ddof = 1
w = f * a
v1 = np.sum(w)
v2 = np.sum(w * a)
m -= np.sum(m * w, axis=None, keepdims=True) / v1
cov = np.dot(m * w, m.T) * v1 / (v1**2 - ddof * v2)
print(cov)
"""
2.368621947484198
"""
Example:
x = np.array([[0, 2], [1, 1], [2, 0]]).T
print(x)
print(np.cov(x))
"""
[[0 1 2]
[2 1 0]]
[[ 1. -1.]
[-1. 1.]]
"""
5 直方图
5.1 numpy.histogram()
numpy.histogram(a, bins=10, range=None, normed=None, weights=None, density=None) 计算数据集的直方图。
Example:
print( np.histogram([1, 2, 1], bins=[0, 1, 2, 3]))
print( np.histogram(np.arange(4), bins=np.arange(5), density=True))
print( np.histogram([[1, 2, 1], [1, 0, 1]], bins=[0,1,2,3]))
"""
(array([0, 2, 1], dtype=int64), array([0, 1, 2, 3]))
(array([0.25, 0.25, 0.25, 0.25]), array([0, 1, 2, 3, 4]))
(array([1, 4, 1], dtype=int64), array([0, 1, 2, 3]))
"""
Example:
a = np.arange(5)
hist, bin_edges = np.histogram(a, density=True)
print(hist)
print(hist.sum())
print(np.sum(hist * np.diff(bin_edges)))
"""
[0.5 0. 0.5 0. 0. 0.5 0. 0.5 0. 0.5]
2.4999999999999996
1.0
"""
Example:
rng = np.random.RandomState(10) # deterministic random data
a = np.hstack((rng.normal(size=1000),
rng.normal(loc=5, scale=2, size=1000)))
_ = plt.hist(a, bins='auto') # arguments are passed to np.histogram
plt.title("Histogram with 'auto' bins")
Text(0.5, 1.0, "Histogram with 'auto' bins")
plt.show()
输出结果:

Lesson17——NumPy 统计函数的更多相关文章
- NumPy 统计函数
NumPy 统计函数 NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等. 函数说明如下: numpy.amin() 和 numpy.amax() numpy.a ...
- NumPy统计函数
NumPy - 统计函数 NumPy 有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等. 函数说明如下: numpy.amin() 和 numpy.amax() 这些函 ...
- 14、numpy——统计函数
NumPy 统计函数 NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等. 函数说明如下:(沿哪条轴执行,就是是最后结果的形式) 1.numpy.amin() 和 ...
- NumPy——统计函数
引入模块import numpy as np 1.numpy.sum(a, axis=None)/a.sum(axis=None) 根据给定轴axis计算数组a相关元素之和,axis整数或元组,不指定 ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 统计函数
NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等. numpy.amin() 用于计算数组中的元素沿指定轴的最小值. numpy.amax() 用于计算数组中的 ...
- 数据分析 大数据之路 四 numpy 2
NumPy 数学函数 NumPy 提供了标准的三角函数:sin().cos().tan(import numpy as np a = np.array([0,30,45,60,90])print (' ...
- numpy学习笔记(三)
(1)numpy的位操作 序号 操作及描述 1. bitwise_and 对数组元素执行位与操作 2. bitwise_or 对数组元素执行位或操作 3. ...
- NumPy教程目录
NumPy Ndarray对象 NumPy数组属性 NumPy数据类型 NumPy数组创建例程 NumPy来自现有数据的数组 NumPy来自数值范围的数组 NumPy切片和索引 NumPy - 高级索 ...
- Python之Numpy详细教程
NumPy - 简介 NumPy 是一个 Python 包. 它代表 “Numeric Python”. 它是一个由多维数组对象和用于处理数组的例程集合组成的库. Numeric,即 NumPy 的前 ...
随机推荐
- python中多模块导入的注意点
导入模块常见的方式有 import xxx ,from xxx import yyy 或者 from xxx import yyy as a(为导入包(方法)取别名主要用于防止包名与模块中的变量重 ...
- linux清理缓存cache
Linux服务器有自己先进的内存管理机制,有时候会发现我们系统的buff/cache内存占用会越来越高,操作系统也有卡顿的情况,遇到这种情况,不妨试试下面的方法. 步骤一:我们先使用free -m查看 ...
- java 方法 compareTo()的正确使用
总结:(1)如果比较的是数字 则结果大于则为1 等于则为0 小于则为-1(2)如果比较的是字符[串] 则按照从左到右排序找对应不一样的字符第一个字符, 然后将字符装对应的ASCLL码数字,做减法运算, ...
- js 将数字型 的字符串 转 数字 【整数 /浮点型数字】
1. js 提供了两种可以将 数字型 的字符串 转 数字 的方法 parseInt()和parseFloat(), parseInt() 是转成整数, 但 向下去整数 , parseFloat() 是 ...
- sublime text 3 添加packagecontrol
打开sublime控制台输入 import urllib.request,os,hashlib; h = '6f4c264a24d933ce70df5dedcf1dcaee' + 'ebe013ee1 ...
- PHP代码审计之create_function()函数
0x00 create_function()简介 适用范围:PHP 4> = 4.0.1,PHP 5,PHP 7 功能:根据传递的参数创建匿名函数,并为其返回唯一名称. 语法: 1 create ...
- 阿里神器 Seata 实现 TCC模式 解决分布式事务,真香!
今天这篇文章介绍一下Seata如何实现TCC事务模式,文章目录如下: 什么是TCC模式? TCC(Try Confirm Cancel)方案是一种应用层面侵入业务的两阶段提交.是目前最火的一种柔性事务 ...
- Java基础(十)——枚举与注解
一.枚举 1.介绍 枚举类:类的对象只有有限个,确定的.当需要定义一组常量时,强烈建议使用枚举类.如果枚举类中只有一个对象,则可以作为单例模式的实现. 使用 enum 定义的枚举类默认继承了 java ...
- 简单socket服务器编程
package socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; ...
- Django settings.py配置文件
import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 这里用到了python中一个神奇的变量 file 这个变量可以获取到当前 ...