import numpy as np
np.set_printoptions(precision=3, suppress=True)
np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
# 装入几条不同鱼的长度
fish_data = np.array([2, 2, 2, 3, 4, 5, 6, 7, 6, 5, 4])
# 计算鱼的长度的总和
print(np.sum(fish_data))
print(fish_data.sum())
# 计算均值(期望值)
N = len(fish_data)
sum_value = np.sum(fish_data)
mu = round(sum_value / N, 3)
print(mu)
# 或者
print(np.mean(fish_data))
# 方差
sigma_2 = np.sum((fish_data - mu) ** 2) / N
print(sigma_2)
# 或者 ddof=0 方差
sigma_2_simple = np.var(fish_data, ddof=0)
print(sigma_2_simple)
# 无偏方差 N-1
sigma_2_1 = np.sum((fish_data - mu) ** 2) / (N - 1)
print(sigma_2_1)
# 或者(无偏方差) ddof=1就是无偏方差
sigma_2_1_simple = np.var(fish_data, ddof=1)
print(sigma_2_1_simple)
# 标准差(方差开平方)
# 开平方的方式(用无偏方差开平方)
sigma = np.sqrt(sigma_2_1)
print(sigma)
# 标准差函数(用样本直接计算,ddof设置为1即无偏方差)
sigma_simple = np.std(fish_data, ddof=1)
print(sigma_simple)
# 标准化
'''
标准化就是把均值转换为0,把标准差转化为1.
均值不相等的数据在一起比较难以把握。
要想均值标准化,就是样本减去均值
'''
std_fish_data = fish_data - mu
print(fish_data)
print(std_fish_data)
std_fish_data_value = np.mean(fish_data - mu)
print(std_fish_data_value)
'''
标准差为1,所有样本除以标准差
'''
std_sigma = np.std(fish_data / sigma, ddof=1)
print(np.round(std_sigma, 3))
# 执行两种转化
standard = np.round((fish_data - mu) / sigma, 3)
print(standard)
# 查看执行两种转化后的均值
print(np.round(np.mean(standard), 3))
# 查看标准差是否为1
print(np.round(np.std(standard, ddof=1), 3))
'''
其他补充统计量
'''
# 最大值
print(np.amax(fish_data))
# 最小值
print(np.amin(fish_data))
# 中位数
print(np.median(fish_data))
# 四分位数
print(np.percentile(fish_data, [0, 25, 50, 75, 100]))