统计函数

1> numpy.amin()和 numpy.amax()

numpy.amin()用于计算数组中元素沿指定轴的最小值

numpy.amax()用于计算数组中元素沿指定轴的最大值

num_np = np.array([[3, 7, 5],[8, 4, 3],[2, 4, 9]])
print(f'原始数组:\n{num_np}')

# 输出结果:
#  原始数组:
#  [[3 7 5]
#   [8 4 3]
#   [2 4 9]]

print(f'每行的最小值:{np.amin(num_np,1)}')  # 输出结果: 每行的最小值:[3 3 2]
print(f'每列的最小值:{np.amin(num_np,0)}')  # 输出结果: 每列的最小值:[2 4 3]
print(f'数组的最大值:{np.amax(num_np)}')  # 输出结果: 数组的最大值:9
print(f'每列的最大值:{np.amax(num_np,axis = 0)}')  # 输出结果: 每列的最大值:[8 7 9]

2> numpy.ptp()

计算数组中元素最大值与最小值的差(最大值-最小值)

num_np = np.array([[3, 7, 5],[8, 4, 3],[2, 4, 9]])
print(f'原始数组:\n{num_np}')

# 输出结果:
#  原始数组:
#  [[3 7 5]
#   [8 4 3]
#   [2 4 9]]
print(f'调用 ptp 函数:{np.ptp(num_np)}')  # 输出结果: 调用 ptp 函数:7
print(f'沿轴 1 调用 ptp 函数:{np.ptp(num_np,axis = 1)}')  # 输出结果: 沿轴 1 调用 ptp 函数:[4 5 7]
print(f'沿轴 0 调用 ptp 函数:{np.ptp(num_np,axis = 0)}')  # 输出结果: 沿轴 0 调用 ptp 函数:[6 3 6]

3> numpy.percentile()

返回数组的百分位数

语法:

numpy.percentile(a, q, axis, keepdims)

参数 说明
a 输入数组
q 要计算的百分位数:为 0~100
axis 沿该轴计算百分位数
keepdims 是否保持维度
num_np = np.array([[10, 7, 4],[3, 2, 1]])
print(f'原始数组:\n{num_np}')

# 输出结果:
#  原始数组:
#  [[10  7  4]
#   [ 3  2  1]]

# 50%的分位数,也就是排序后的中位数
print(f'中位数:{np.percentile(num_np,50)}')  # 输出结果: 中位数:3.5

print(f'沿轴 0,在纵列上求中位数:{np.percentile(num_np,50,axis = 0)}')  # 输出结果: 沿轴 0,在纵列上求中位数:[6.5 4.5 2.5]

print(f'沿轴 1,在行列上求中位数:{np.percentile(num_np,50,axis =  1)}')  # 输出结果: 沿轴 1,在行列上求中位数:[7. 2.]
print(f'沿轴 0,在纵列上求中位数并保持维度不变:{np.percentile(num_np,50,axis = 0,keepdims = True)}')

# 输出结果: 
#  沿轴 0,在纵列上求中位数并保持维度不变:[[6.5 4.5 2.5]]

4> numpy.median()

用于计算数组 a 中元素的中位数(中值)

num_np = np.array([[30, 65, 70],[80, 95, 10],[50, 90, 60]])
print(f'原始数组:{num_np}')

# 输出结果:
#  原始数组:[[30 65 70]
#  [80 95 10]
#  [50 90 60]] 

print(f'调用 median 函数:{np.median(num_np)}')  # 输出结果: 调用 median 函数:65.0
print(f'沿轴 0 调用 median 函数:{np.median(num_np,axis = 0)}')  # 输出结果: 沿轴 0 调用 median 函数:[50. 90. 60.]
print(f'沿轴 1 调用 median 函数:{np.median(num_np,axis = 1)}')  # 输出结果:  沿轴 1 调用 median 函数:[65. 80. 60.]

5> numpy.mean()

用于返回数组中元素的算术平均值;

如果提供轴,则沿其计算;

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

num_np = np.array([[30, 65, 70],[80, 95, 10],[50, 90, 60]])

print(f'原始数组:{num_np}')
# 输出结果:
#  原始数组:[[30 65 70]
#   [80 95 10]
#   [50 90 60]]

print(f'调用 mean 函数:{np.mean(num_np)}')  # 输出结果: 调用 mean 函数:61.111111111111114
print(f'沿轴 0 调用 mean 函数:{np.mean(num_np,axis = 0)}')  # 输出结果: 沿轴 0 调用 mean 函数:[53.3333 83.3333 46.6667]
print(f'沿轴 1 调用 mean 函数:{np.mean(num_np,axis = 1)}')  # 输出结果: 沿轴 1 调用 mean 函数:[55.     61.6667 66.6667]

6> numpy.average()

根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值

num_np = np.array([1, 2, 3, 4])
print(f'原始数组:{num_np}')  # 输出结果: 原始数组:[1 2 3 4]
print(f'调用 average 函数:{np.average(num_np)}')

# 输出结果:
#  调用 average 函数:2.5

# 权重:
wts = np.array([4, 3, 2, 1])
print(f'添加权重后: {np.average(num_np,weights = wts)}')

# 输出结果:
#  添加权重后: 2.0

# 返回权重的和
print(f'返回权重的和: {np.average(num_np,weights = wts, returned = True)}')

# 输出结果:
#  返回权重的和: (2.0, 10.0)

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

num_np = np.arange(6).reshape(3, 2)
print(f'原始数组:{num_np}')

# 输出结果:
#  原始数组:[[0 1]
#   [2 3]
#   [4 5]]

print(f'调用 average 函数{np.average(num_np)}')

# 输出结果:
#  调用 average 函数2.5

# 权重:
wts = np.array([4, 3])
print(f'添加权重后: {np.average(num_np,weights = wts,axis = 1)}')

# 输出结果:
#  添加权重后: [0.4286 2.4286 4.4286]

# 返回权重的和
print(f'添加权重后: {np.average(num_np,weights = wts, axis = 1, returned = True)}')

# 输出结果:
#  返回权重的和: (array([0.4286, 2.4286, 4.4286]), array([7., 7., 7.]))

7> 方差

每个样本值与全体样本值的平均数之差的平方值的平均数

num_np = np.array([1, 2, 3, 4])
print(f'方差:{np.var(num_np)}')  # 输出结果:  方差:1.25

8> 标准差

方差的算术平方根

num_np = np.array([1, 2, 3, 4])
print(f'标准差:{np.std(num_np)}')  # 输出结果:  标准差:1.118033988749895