VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python爬虫 >
  • NumPy常用统计函数(2)

¯)2Nσ2=i=1N(xix¯)2N

variance——var方差

b = np.random.randint(1, 30, (2, 3, 4))
print("数组b:\n", b)
print("np.std(b, axis=2):\n", np.std(b, axis=2))	# 标准差
print("np.var(b, axis=2):\n", np.var(b, axis=2))	# 方差

输出:

数组b:
 [[[16  8 27 24]
  [12 15 25  8]
  [11 19 15 26]]

 [[29 15 18 24]
  [17  8  4 15]
  [ 2 28 10 21]]]
np.std(b, axis=2):
 [[7.39509973 6.28490254 5.53962995]
 [5.40832691 5.24404424 9.98436277]]
np.var(b, axis=2):
 [[54.6875 39.5    30.6875]
 [29.25   27.5    99.6875]]

我们来检验一下,例如,对2轴中12 15 25 8这组数据进行求标准差:

均值为:x¯=15

则样本标准差为:σ=(1215)2+(1515)2+(2515)2+(815)24=39.56.284902544988

方差为:σ2=39.5

4.最大值/最小值

numpy.amin(a,axis=None)/numpy.min(a,axis=None)/a.min(axis=None)

返回轴axis上的最小值,若不指定轴,默认返回所有元素最小值

numpy.amax(a,axis=None)/numpy.max(a,axis=None)/a.max(axis=None)

返回轴axis上的最大值,若不指定轴,默认返回所有元素最大值

例:

c = np.random.randint(1, 60, (2, 3, 4))
print("数组c:\n", c)
print("np.min(c):     ", np.min(c))
print("np.amin(c, axis=1):\n", np.amin(c, axis=1))
print("c.min(axis=2): \n", c.min(axis=2))
print("-"*20 + '分割线' + '-'*20)
print("np.max(c):    ", np.max(c))
print("np.amax(c, axis=1):\n", np.amax(c, axis=1))
print("c.max(axis=2):\n", c.max(axis=2))

输出:

数组c:
 [[[15 50 24  6]
  [ 2  8 27 53]
  [52 23  9 35]]

 [[17 38 42 20]
  [ 4 32  9 17]
  [48 39 17 40]]]
np.min(c):      2
np.amin(c, axis=1):
 [[ 2  8  9  6]
 [ 4 32  9 17]]
c.min(axis=2): 
 [[ 6  2  9]
 [17  4 17]]
--------------------分割线--------------------
np.max(c):     53
np.amax(c, axis=1):
 [[52 50 27 53]
 [48 39 42 40]]
c.max(axis=2):
 [[50 53 52]
 [42 32 48]]

严格的说,a.min等并不是NumPy库的函数


5.最值下标

numpy.argmin(a,axis=None)/a.argmin(axis=None)

返回数组指定轴上最小值降成一维后的相对坐标

numpy.argmax(a,axis=None)/a.argmax(axis=None)

返回数组指定轴上最大值降成一维后的相对坐标

例:

print("数组c:\n", c)
print("c.argmax():  ", c.argmax())
print("np.argmax(c, axis=2):\n", np.argmax(c, axis=2))
print("-"*20 + '分割线' + '-'*20)
print("np.argmin(c):  ", np.argmin(c))
print("c.argmin(axis=1):\n", c.argmin(axis=1))

输出:

数组c:
 [[[50 44 13 16]
  [26 23 31 35]
  [ 5 21 42  8]]

 [[ 6 53 10 57]
  [14  5 18 38]
  [40 31  4 55]]]
c.argmax():   15		# 降一维后57下标是15
np.argmax(c, axis=2):
 [[0 3 2]				# 在轴2上,50-0 35-3 42-2  57-3  38-3  55-3
 [3 3 3]]
--------------------分割线--------------------
np.argmin(c):   22
c.argmin(axis=1):
 [[2 2 0 2]
 [0 1 2 1]]

7.numpy.unravel_index(index, shape)

根据shape将一维下标index转换成多维下标(对应shape的下标),与6中的argmax,argmin配合使用

例:

print("数组c:\n", c)
print(np.unravel_index(np.argmax(c), c.shape))

输出:

 [[[22  4 28 56]
  [45 34  3 22]
  [59 43 43 27]]

 [[32 35 47 53]
  [ 7 27 41 18]
  [40 32 30 43]]]
(0, 2, 0)			# 59是数组最大值,其索引坐标为(0,2,0)

6.中值

8.numpy.median(a,axis=None)

返回数组在指定轴上的中位数(中值),若不指定轴,默认返回全部元素中位数

例:

print("数组c:\n", c)
print("np.median(c):  ", np.median(c))

输出:

[[[17 59 14 23]
  [27 59  6 12]
  [43 16 27 17]]

 [[12 10  5 17]
  [21 55 18 42]
  [41 36 40  5]]]
np.median(c):   19.5

7.其他函数

numpy.ptp(a,axis=None)/a.ptp(a,axis=None)

计算指定轴上最大值与最小值的差,若不指定axis,默认为全部元素

例:

print("np.ptp(c):  ", np.ptp(c))
print("c.ptp(axis=1):\n", c.ptp(axis=1))

输出:

数组c:
 [[[35 28 18 38]
  [44 56  7 24]
  [ 4 59  2 24]]

 [[55 56  5 27]
  [18 44 22  1]
  [ 3 30 20 43]]]
np.ptp(c):   58		# 	59-1=58
c.ptp(axis=1):
 [[40 31 16 14]		# 44-4=40 59-28=31 ...
 [52 26 17 42]]

numpy.percentile(a, q, axis=None)

  1. a:输入数组
  2. q:要计算的百分位数,在0~100之间
  3. axis:计算百分位数的轴

返回一个数,满足至少有q%


相关教程