Numpy之统计函数

NumPy 有很多有用的统计函数,用于从数组中给定的元素数组中查找最小,最大,百分标准差和方差等。


numpy.amin() 和 numpy.amax()

从给定数组中的元素沿指定轴返回最小值和最大值。

import numpy as np 
a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]])  
print('a:') 
print(a) 
print()  
print('调用amin()函数:') 
print(np.amin(a, 1))
print()  
print('再次调用amin()函数:')  
print(np.amin(a, 0))  
print()
print('调用amax()函数:')  
print(np.amax(a))
print()  
print('再次调用amax()函数:')  
print(np.amax(a, axis=0))
a:
[[3 7 5]
 [8 4 3]
 [2 4 9]]

调用amin()函数:
[3 3 2]

再次调用amin()函数:
[2 4 3]

调用amax()函数:
9

再次调用amax()函数:
[8 7 9]

numpy.ptp()

numpy.ptp()函数返回沿轴的值的范围(最大值 - 最小值)。

a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]])  
print('a:') 
print(a) 
print()  
print('调用ptp()函数:')  
print(np.ptp(a))
print()  
print('沿轴1调用ptp()函数:')  
print(np.ptp(a, axis=1))
print()  
print('沿轴0调用ptp()函数:')  
print(np.ptp(a, axis= 0))
a:
[[3 7 5]
 [8 4 3]
 [2 4 9]]

调用ptp()函数:
7

沿轴1调用ptp()函数:
[4 5 7]

沿轴0调用ptp()函数:
[6 3 6]

numpy.percentile()

百分位数是统计中使用的度量,表示小于这个值得观察值占某个百分比。

函数numpy.percentile()接受以下参数:

序号

参数及描述

1.

a 输入数组

2.

q 要计算的百分位数,在 0 ~ 100 之间

3.

axis 沿着它计算百分位数的轴

a = np.array([[30, 40, 70], [80, 20, 10], [50, 90, 60]])  
print('a:') 
print(a) 
print()
print('调用percentile()函数:')  
print(np.percentile(a,50))  
print() 
print('沿轴1调用percentile()函数:')  
print(np.percentile(a, 50, axis=1))  
print()  
print('沿轴0调用percentile()函数:')  
print(np.percentile(a, 50, axis=0))
a:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

调用percentile()函数:
50.0

沿轴1调用percentile()函数:
[40. 20. 60.]

沿轴0调用percentile()函数:
[50. 40. 60.]

numpy.median()

中值定义为将数据样本的上半部分与下半部分分开的值。

a = np.array([[30, 40, 70], [80, 20, 10], [50, 90, 60]])  
print('a:') 
print(a) 
print()
print('调用median()函数:')  
print(np.median(a))  
print() 
print('沿轴1调用median()函数:')  
print(np.median(a, axis=1))  
print()  
print('沿轴0调用median()函数:')  
print(np.median(a, axis=0))
a:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

调用median()函数:
50.0

沿轴1调用median()函数:
[40. 20. 60.]

沿轴0调用median()函数:
[50. 40. 60.]

numpy.mean()

算术平均值是沿轴的元素的总和除以元素的数量。

a = np.array([[30, 40, 70], [80, 20, 10], [50, 90, 60]])  
print('a:') 
print(a) 
print()
print('调用mean()函数:')  
print(np.median(a))  
print() 
print('沿轴1调用mean()函数:')  
print(np.median(a, axis=1))  
print()  
print('沿轴0调用mean()函数:')  
print(np.median(a, axis=0))
a:
[[30 40 70]
 [80 20 10]
 [50 90 60]]

调用mean()函数:
50.0

沿轴1调用mean()函数:
[40. 20. 60.]

沿轴0调用mean()函数:
[50. 40. 60.]

numpy.average()

加权平均值是由每个分量乘以反映其重要性的因子得到的平均值。

numpy.average()函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。 该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。

考虑数组[1,2,3,4]和相应的权重[4,3,2,1],通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。

加权平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1)
a = np.array([1, 2, 3, 4])  
print('a:')  
print(a) 
print()  
# 不指定权重时相当于 mean 函数
print('调用average()函数:')  
print(np.average(a))
print()  

wts = np.array([4,3,2,1])  
print('再次调用 average() 函数:')  
print(np.average(a, weights=wts))  
print()
# 如果 returned 参数设为 true,则返回权重的和  
print('权重的和:')
print(np.average([1, 2, 3, 4], weights=[4, 3, 2, 1], returned=True))
a:
[1 2 3 4]

调用average()函数:
2.5

再次调用 average() 函数:
2.0

权重的和:
(2.0, 10.0)

在多维数组中,可以指定用于计算的轴。

a = np.arange(6).reshape(3, 2)  
print('a:')
print(a) 
print()  
print('修改后的数组:') 
wt = np.array([3, 5])  
print(np.average(a, axis=1, weights=wt))  
print()  
print('修改后的数组:')  
print(np.average(a, axis=1, weights=wt, returned=True))
a:
[[0 1]
 [2 3]
 [4 5]]

修改后的数组:
[0.625 2.625 4.625]

修改后的数组:
(array([0.625, 2.625, 4.625]), array([8., 8., 8.]))

标准差

标准差是与均值的偏差的平方的平均值的平方根。

标准差公式如下:

std = sqrt(mean((x - x.mean())**2))
print(np.std([1, 2, 3, 4]))
1.118033988749895

方差

方差是偏差的平方的平均值,即

mean((x - x.mean())** 2)

换句话说,标准差是方差的平方根。

print(np.var([1, 2, 3, 4]))
1.25