NumPy - 统计函数
NumPy 有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等。 函数说明如下:
numpy.amin()
和numpy.amax()
这些函数从给定数组中的元素沿指定轴返回最小值和最大值。
示例
import numpy as np
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print( '我们的数组是:')
print( a)
print( '\n')
print( '调用 amin() 函数:')
#x轴方向
print( np.amin(a,1))
print( '\n')
print( '再次调用 amin() 函数:')
print( np.amin(a,0))
print( '\n')
print( '调用 amax() 函数:')
print( np.amax(a))
print( '\n')
print( '再次调用 amax() 函数:')
print( np.amax(a, axis = 0))
输出如下:
我们的数组是:
[[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()
函数返回沿轴的方向【最大值 - 最小值】的范围。
import numpy as np
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print '我们的数组是:'
print a
print '\n'
print '调用 ptp() 函数:'
print np.ptp(a)
print '\n'
print '沿轴 1 调用 ptp() 函数:'
print np.ptp(a, axis = 1)
print '\n'
print '沿轴 0 调用 ptp() 函数:'
print np.ptp(a, axis = 0)
输出如下:
我们的数组是:
[[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()
接受以下参数。
在说明百分位数概念的时候,先要说明一个前提,那就是我们的研究对象是一组数据。在一组数据所构成的样本集合中,对于其中的一个样本来说,
小于这个样本的值的样本应该是整个样本集合的一个子集,而且我们能够计算出小于这个样本值的样本数量在整个样本集合中占到百分之多少,那么这个
样本的值就是这个百分数所对应的百分位数。举一个例子,小明在一次考试中得了50分,而全班有70%的同学的成绩都小于50分,那么对于由整个班级的
考试成绩所构成的一个样本集合来说,第70百分位数等于50。百分位数的意义就在于,我们可以了解到某一个样本在整个样本集合中所处的位置或者
某一个样本组的值大概是怎么样分布的
numpy.percentile(a, q, axis)
其中:
序号 | 参数及描述 |
---|---|
1. | a 输入数组 |
2. | q 要计算的百分位数,在 0 ~ 100 之间 |
3. | axis 沿着它计算百分位数的轴 |
示例
import numpy as np
a = np.array([[30,40,70],[80,20,10],[50,90,60]])
print( '我们的数组是:')
print( a)
print( '\n')
print( '调用 percentile() 函数:')
print( np.percentile(a,50))
print( '\n')
print( '沿轴 1 调用 percentile() 函数:')
print( np.percentile(a,50, axis = 1))
print( '\n')
print( '沿轴 0 调用 percentile() 函数:')
print( np.percentile(a,50, axis = 0))
输出如下:
我们的数组是:
[[30 40 70]
[80 20 10]
[50 90 60]]
调用 percentile() 函数:
50.0
沿轴 1 调用 percentile() 函数:
[ 40. 20. 60.]
沿轴 0 调用 percentile() 函数:
[ 50. 40. 60.]
numpy.median()
中值定义为将数据样本的上半部分与下半部分分开的值。numpy.median()
函数的用法如下面的程序所示。
示例
import numpy as np
a = np.array([[30,65,70],[80,95,10],[50,90,60]])
print( '我们的数组是:')
print( a)
print( '\n')
print( '调用 median() 函数:')
print( np.median(a))
print( '\n')
print( '沿轴 0 调用 median() 函数:')
print( np.median(a, axis = 0))
print( '\n')
print( '沿轴 1 调用 median() 函数:')
print( np.median(a, axis = 1))
输出如下:
我们的数组是:
[[30 65 70]
[80 95 10]
[50 90 60]]
调用 median() 函数:
65.0
沿轴 0 调用 median() 函数:
[ 50. 90. 60.]
沿轴 1 调用 median() 函数:
[ 65. 80. 60.]
numpy.mean()
算术平均值是沿轴的元素的总和除以元素的数量。numpy.mean()
函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。
示例
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print( '我们的数组是:')
print( a)
print( '\n')
print( '调用 mean() 函数:')
print( np.mean(a))
print( '\n')
print( '沿轴 0 调用 mean() 函数:')
print( np.mean(a, axis = 0))
print( '\n')
print( '沿轴 1 调用 mean() 函数:')
print( np.mean(a, axis = 1))
输出如下:
我们的数组是:
[[1 2 3]
[3 4 5]
[4 5 6]]
调用 mean() 函数:
3.66666666667
沿轴 0 调用 mean() 函数:
[ 2.66666667 3.66666667 4.66666667]
沿轴 1 调用 mean() 函数:
[ 2. 4. 5.]
numpy.average()
加权平均值是由每个分量乘以反映其重要性的因子得到的平均值。numpy.average()
函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。 该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。
考虑数组[1,2,3,4]
和相应的权重[4,3,2,1]
,通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。
加权平均值 = (1*4+2*3+3*2+4*1)/(4+3+2+1)
示例
import numpy as np
a = np.array([1,2,3,4])
print( '我们的数组是:')
print( a)
print( '\n')
print( '调用 average() 函数:')
print( np.average(a))
print( '\n')
# 不指定权重时相当于 mean 函数
wts = np.array([4,3,2,1])
print( '再次调用 average() 函数:')
print( np.average(a,weights = wts))
print( '\n')
# 如果 returned 参数设为 true,则返回权重的和
print( '权重的和:')
print( np.average([1,2,3, 4],weights = [4,3,2,1], returned = True))
输出如下:
我们的数组是:
[1 2 3 4]
调用 average() 函数:
2.5
再次调用 average() 函数:
2.0
权重的和:
(2.0, 10.0)
在多维数组中,可以指定用于计算的轴。
示例
import numpy as np
a = np.arange(6).reshape(3,2)
print( '我们的数组是:')
print( a)
print( '\n')
print( '修改后的数组:')
wt = np.array([3,5])
print( np.average(a, axis = 1, weights = wt))
print( '\n')
print( '修改后的数组:')
print( np.average(a, axis = 1, weights = wt, returned = True))
输出如下:
我们的数组是:
[[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))
如果数组是[1,2,3,4]
,则其平均值为2.5
。 因此,差的平方是[2.25,0.25,0.25,2.25]
,并且其平均值的平方根除以4,即sqrt(5/4)
是1.1180339887498949
。
示例
import numpy as np
print(np.std([1,2,3,4]))
输出如下:
1.1180339887498949
方差
方差是偏差的平方的平均值,即mean((x - x.mean())** 2)
。 换句话说,标准差是方差的平方根。
示例
import numpy as np
print(np.var([1,2,3,4]))
输出如下:
1.25