-
NumPy常用统计函数(2)
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
这组数据进行求标准差:
均值为:
则样本标准差为:
方差为:
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)
a
:输入数组q
:要计算的百分位数,在0~100之间axis
:计算百分位数的轴
返回一个数,满足至少有q%