使用NumPy统计函数对振幅进行分析

使用NumPy统计函数对振幅进行分析,第1张

1、振幅

在证券市场中,振幅是指某投资品种在一定时期中的最低价与最高价之间的振荡幅度,它在一定程度上表现该投资品种的活跃程度。如果一只股票的振幅较小,说明该股不够活跃,反之则说明该股比较活跃。
振幅分析有日振幅分析、周振幅分析、月振幅分析等等类型。如分析股票日振幅,该股票当日的最高价是15元,最低价是13元,那么该股票当天的振幅就是15.38%。周振幅分析、月振幅分析以此类推。
振幅的一种计算方法:

振幅=(当期最高价-当期最低价)/上期收盘价×100%

如下图中的振幅为13.91%。

2、Numpy

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。
NumPy 官网 http://www.numpy.org/

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。
其基本使用方法如下:

import numpy as np 

ampl = [0.041,0.0437,0.0482,0.1117,0.0861,0.056,0.0818,0.101,0.0727,0.0625,0.1002,0.0947,0.0661,0.0582,0.0813,0.0724,0.1459,0.0652,0.0713,0.0679,0.1725,0.0722,0.0534,0.0823,0.121,0.1681,0.4295,0.3998,0.3781,0.1391]
a = np.array(ampl)
print(a.ndim, a.shape, a.size)  #秩,维度,元素的总个数
print ('数组:', a) 

上述返回如下:

NumPy 提供了很多统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等。

2.1 最大值、最小值、最大值与最小值的差,中位数,算术平均值
print ('和:',  np.sum(a))
print ('长度:',  a.size)
print ('最小值:',  np.amin(a))
print ('最大值:',  np.amax(a))
print ('最大值与最小值的差:',  np.ptp(a))
print ('中位数:',  np.median(a)) #中值
print ('算术平均值:',  np.mean(a))

结果如下:

2.2 百分位数

百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。第 p 个百分位数是这样一个值,它使得至少有 p% 的数据项小于或等于这个值,且至少有 (100-p)% 的数据项大于或等于这个值。

for x in range(10, 100, 10):
    print("百分位:%s,百分位数:%s" % (x, round(np.percentile(a, x), 4)))
print("\n")

结果如下:

2.3 加权平均值

加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。
分别设计几个等差和等比数列做为权数。


index_pow = [pow(10, x) for x in range(-2, 1)]
print("等差值列表:", index_pow)
for index in index_pow:
    print("等差:", index)
    jiaquan1 = [round(1 + x * index, 2) for x in range(1, 31)]
    print("权数:", jiaquan1)
    b1 = np.array(jiaquan1)
    print ('加权平均值:',  np.average(a, weights = b1))
    print("-"*30)
    

index_pow = [1 + x*0.5 for x in range(1, 4)]
print("等比值列表:", index_pow)
for index in index_pow:
    print("等比:", index)
    jiaquan1 = [round(index ** (x-1), 1) for x in range(1, 31)]
    print("权数:", jiaquan1)
    b1 = np.array(jiaquan1)
    print ('加权平均值:',  np.average(a, weights = b1))
    print("-"*30)

结果如下:

2.4 标准差、方差

统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。
标准差是一组数据平均值分散程度的一种度量。标准差是方差的平方根。

标准差应用于投资上,可作为量度稳定性的指标。标准差数值越大,代表远离过去平均数值,较不稳定故风险越高。相反,标准差数值越小,代表较为稳定,风险亦较小。

print ('标准差:',  np.std(a)) 
print ('方差:',  np.var(a))

结果如下:

2.5 去掉最大最小值求平均值

这需要先转成list列表来 *** 作

c = list(a)  #转成list *** 作
c.remove(min(c))
c.remove(max(c))
print ('去掉最大最小值新数组:', c, "长度:", len(c))
print ('算术平均值:',  np.mean(np.array(c)))

结果如下:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/943015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-18
下一篇 2022-05-18

发表评论

登录后才能评论

评论列表(0条)

保存