Numpy 使用总结(三)

Numpy的常用函数

  1. 算术平均值 numpy.mean
    样本: S = [s1, s2, …, sn]
    算术平均值: M = (s1 + s2 + … + sn) / n
    我们举个例子
    在现实中,我们反复测量一个物体的实际高度可以得到这样一组数据
    S = [s1, s2, …, sn]
    这组数据围绕着这个物体的实际高度(真值)上下波动
    每个数据与真值的差为d
    即:
    s1 = s + d1
    s2 = s + d2

    sn = s + dn
    那么算术平均值为: M = s + (d1 + d2 + … + dn) / n
    当(d1 + d2 + … + dn) / n趋近于零时,M就近似于s
    算术平均值就是当样本数足够的条件下对真值得无偏估计。
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import numpy as np
S = np.array([5.10,5.02,5.03,4.96,4.98])
mean = 0
for s in S:
    mean += s
mean /= s
print(mean)
mean = np.mean(S)
print(mean)
mean = S.mean()
print(mean)

  1. 加权平均值
    numpy.average(样本数组, weights=权重数组)
    加权算术平均数同时受到两个因素的影响,一个是各组数值的大小,另一个是各组分布频数的多少。在数值不变的情况下,一组的频数越多,该组的数值对平均数的作用就大,反之,越小。

    频数在加权算术平均数中起着权衡轻重的作用,这也是加权算术平均数“加权”的含义。

    在这里插入图片描述在这里插入图片描述这是苹果某一年某一月的股票收盘价
    样本:S = [s1, s2, …, sn]
    权重:W = [w1, w2, …, wn]
    加权平均值:
    a = (s1w1+s2w2+…+snwn)/(w1+w2+…+wn)

closing_prices, volumes = np.loadtxt(
    '../../data/aapl.csv', delimiter=',',
    usecols=(6, 7), unpack=True)                 #数据读取
vwap, wsum = 0, 0
for closing_price, volume in zip(
        closing_prices, volumes):
    vwap += closing_price * volume
    wsum += volume
vwap /= wsum
print(vwap)
vwap = np.average(closing_prices, weights=volumes)
print(vwap)

  1. 最值
    numpy.max() 一个数组中的最大元素
    numpy.min() 一个数组中的最小元素
    numpy.argmax() 一个数组中最大元素的下标
    numpy.argmin() 一个数组中最小元素的下标
    numpy.maximum() 把两个数组中相对应位置的最大元素收集到一个新的数组中
    numpy.minimum() 把两个数组中相对应位置的最小元素收集到一个新的数组中
    numpy.ptp() 一个数组中最大元素与最小元素的差
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import numpy as np
# 产生9个位于[10, 100)区间的服从均匀分布的随机数
a = np.random.randint(10, 100, 9).reshape(3, 3)
print(a)
b, c = np.max(a), np.min(a)
print(b, c)
d, e = np.argmax(a), np.argmin(a)
print(d, e)
names = np.array(['zhangfei', 'zhaoyun', 'guanyu'])
scores = np.array([70, 90, 80])
print(names[np.argmax(scores)])
f = np.random.randint(10, 100, 9).reshape(3, 3)
print(f)
g, h = np.maximum(a, f), np.minimum(a, f)
print(g, h, sep='\n')
i = np.ptp(a)
print(i)
  1. 中位数
    一个有限数组中位置正中间的数,假如数组总个数是偶数,取中间两个数的平均值。
    numpy.median()
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import numpy as np
s = np.array([2,5,6,3,4,9])
print(median)
median = np.median(closing_prices)
print(median)

  1. 标准差
    样本:S = [s1, s2, …, sn]
    均值:m = (s1+s2+…+sn)/n -> 真值
    离差:D = [d1, d2, …, dn], di = si - m
    离差方:Q = [q1, q2, …, qn], qi = di^2
    (总体)方差:v = (q1+q2+…+qn)/n
    (总体)标准差:std = sqrt(v) -> 方均根误差,表示所有样本相对于真值的偏离程度。将其作为表征一组随机量分 散性的指标
    (样本)方差:v’ = (q1+q2+…+qn)/(n-1)
    (样本)标准差:std’ = sqrt(v’)
    样本量越大越能反映真实的情况,而算术平均值却完全忽略了这个问题,对此统计学上早有考虑,在统计学中样本的均差多是除以自由度(n-1),它的意思是样本能自由选择的程度。当选到只剩一个时,它不可能再有自由了,所以自由度是n-1。
    np.std(样本数组, ddof=非自由度(缺省0))->标准差
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import numpy as np
s = np.arange(1,9)
# 均值
mean = s.mean()
# 离差
devs = s - mean
# 总体方差
pvar = (devs ** 2).sum() / devs.size
# 总体标准差
pstd = np.sqrt(pvar)
# 样本方差
svar = (devs ** 2).sum() / (devs.size - 1)
# 样本标准差
sstd = np.sqrt(svar)
print(pstd, sstd)
pstd = np.std(s)
sstd = np.std(s, ddof=1)
print(pstd, sstd)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值