Python 现代开发学习笔记

(十一)从统计目标选择函数

1. 平均数、分位数与离散程度

四条时长为 [10,20,30,100]。平均数是 40,中位数为 25;较大的 100 会明显影响平均数。分位数把排序后的数据按位置分开,示例中 25% 与 75% 分位数分别为 17.5、47.5。

# 项目文件:demos/statistics.py
# 先确定统计对象与轴,再决定平均、中位数、分位数或按类别累计。
import numpy as np

values = np.array([10, 20, 30, 100], dtype=np.float64)
print(
    "统计", values.mean(), np.median(values), np.quantile(values, [0.25, 0.75]).tolist()
)
print("总体标准差", round(float(values.std()), 6))
print("次序", np.argsort(values)[::-1].tolist(), "最大位置", int(values.argmax()))
tags = np.array(["基础", "数值", "基础", "游戏"])
names, counts = np.unique(tags, return_counts=True)
print("计数", dict(zip(names.tolist(), counts.tolist())))
print("相邻得分间隔", np.diff(np.array([0.0, 2.8, 3.6, 4.3])).round(2).tolist())

std() 默认以元素个数作为平方偏差的除数,描述这一组数相对其均值的离散程度;本章的标准化沿用这个定义。样本标准差的 std(ddof=1) 把除数改成元素数减 1。例如 [10,20] 的均值为 15,平方偏差总和为 50:默认除以 2 再开平方得到 5,ddof=1 则除以 1 再开平方得到约 7.071068。标准差参数

argsort 返回排序后的原位置,argmax 返回最大值的位置。用这些位置去选择书名与数值时,要对对应数组使用同一份索引,保持标签和数据相配。

2. 类别计数与相邻变化

unique 配合 return_counts 得到不同标签及次数。它会按其排序规则组织结果,不是按第一次出现顺序;目录项目会单独维护标签词表,固定矩阵列的含义。

np.diff([0,2.8,3.6,4.3]) 计算后一个减前一个,得到 [2.8,0.8,0.7]。这也可以直接分析上一章留下的得分时刻:先把时间按同一局的次序整理,再求相邻得分间隔。

笔记正文与全部题解 · Ctrl / ⌘ K