1 算术平均值
数学运算
样本:[s1, s2, ..., sn]
算术平均值 = (s1 + s2 + ... + sn) / n
numpy函数
numpy.mean(样本) -> 算术平均值
2 加权平均值
数学运算
样本:[s1, s2, ..., sn]
权重:[w1, w2, ..., wn]
加权平均值=(s1w1 + s2w2 + ... + snwn) / (w1+w2+...+wn)
numpy函数
numpy.average(样本, weights=权重) -> 加权平均值
3 最大值和最小值
max() - 计算数组中元素的最大值
min() - 计算数组中元素的最小值
maximum() - 计算两个或多个数组对应元素的最大值并构成一个新的数组
minimum() - 计算两个或多个数组对应元素的最小值并构成一个新的数组
import numpy as np a = np.array([[1,8], [3,9]]) b = np.array([[5,7], [4,6]]) print(np.maximum(a,b)) # [[5 8] # [4 9]] print(np.minimum(a,b)) # [[1 7] # [3 6]]
4 中位数
将多个样本按大小顺序排列,居于中间位置的元素即为中位数。
numpy.median(样本)->中位数
5 标准差
数学运算
样本:S = [s1, s2, ..., sn]
算术平均值:m = (s1+s2+...+sn)/n
离差:D = [s1-m, s2-m, ..., sn-m]
离差方:Q = [(s1-m)^2, (s2-m)^2, ..., (sn-m)^2]
方差:((s1-m)^2+(s2-m)^2+...+(sn-m)^2)/n
标准差:sqrt(((s1-m)^2+(s2-m)^2+...+(sn-m)^2)/n)
numpy函数
numpy.std(S, ddof=非*样本数)
总体标准差:sqrt(.../n)
样本标准差:sqrt(.../(n-1))
6 元素选取
1) take + where + 掩码
2) [ ] + where+掩码
3) [ ] + 掩码
根据星期统计平均价格
import datetime as dt import numpy as np def dmy2wday(dmy): dmy = str(dmy, encoding='utf-8') date = dt.datetime.strptime(dmy, '%d-%m-%Y').date() wday = date.weekday() # 用0到4表示星期一到星期五 return wday wdays, closing_prices = np.loadtxt( './aapl.csv', delimiter=',', usecols=(1, 6), unpack=True, converters={1: dmy2wday}) ave_closing_prices = np.zeros(5) # ave_closing_prices.size = 5 for wday in range(ave_closing_prices.size): ''' # 通过take函数从数组中提取与特定下标集合相对应的元素 ave_closing_prices[wday] = np.take(closing_prices, np.where(wdays == wday)).mean() # 通过下标运算符根据特定下标集合选取相对应的元素 ave_closing_prices[wday] = closing_prices[np.where(wdays == wday)].mean() ''' # 通过下标运算符根据特定掩码数组选取与真值相对应的元素 ave_closing_prices[wday] = closing_prices[ wdays == wday].mean() for wday, ave_closing_price in zip( ['MON', 'TUE', 'WED', 'THU', 'FRI'], ave_closing_prices): print(wday, np.round(ave_closing_price, 2))
运算
MON 351.79 TUE 350.64 WED 352.14 THU 350.9 FRI 350.02
7 轴向扩展
apply_along_axis(函数, 轴向, 参数数组) -> 数组
沿着参数数组的指定轴向向给定函数传递参数,并将其所返回的数组同样沿着指定的轴向组合成一个数组返回。
import numpy as np def fun(a): return a ** 2 a = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9]]) b = np.apply_along_axis(fun, 0, a) print(b) # [[ 1 4 9] # [16 25 36] # [49 64 81]] c = np.apply_along_axis(fun, 1, a) print(c) # [[ 1 4 9] # [16 25 36] # [49 64 81]]