Numpy学习笔记——便捷函数

5 篇文章 0 订阅
1 篇文章 0 订阅

4.1 相关性

使用cov函数计算股票收益率的协方差矩阵:

covariance = np.cov(bhp_returns, vale_returns)
print "Covariance", covariance

使用diagonal函数查看对角线上的元素:

print "Covariance diagonal", covariance.diagonal()

使用trace函数计算矩阵的迹,即对角线上元素之和:

print "Covariance trace", covariance.trace()

两个向量的相关系数被定义为协方差除以各自标准差的乘积:

print covariance/ (bhp_returns.std() * vale_returns.std())

使用corrcoef函数计算相关系数:

print "Correlation coefficient", np.corrcoef(bhp_returns, vale_returns)

4.4 动手实践:多项式拟合

NumPy中的ployfit函数可以用多项式去拟合一系列数据点;
使用BHP和VALE的股票价格数据。用一个三次多项式去拟合两只股票收盘价的
差价;
np.polyfit():

bhp=np.loadtxt('BHP.csv', delimiter=',', usecols=(6,), unpack=True)
vale=np.loadtxt('VALE.csv', delimiter=',', usecols=(6,),unpack=True)
t = np.arange(len(bhp))
poly = np.polyfit(t, bhp - vale, int(sys.argv[1]))
print "Polynomial fit", poly

推断下一个值:
np.polyval()

print "Next value", np.polyval(poly, t[-1] + 1)

使用roots函数找出我们拟合的多项式函数什么时候到达0值:

print "Roots", np.roots(poly)

使用polyder函数对多项式函数求导:返回的是求导后的系数数组

der = np.polyder(poly)
print "Derivative", der

求出导数函数的根,即找出原多项式函数的极值点:

print "Extremas", np.roots(der)

使用polyval计算多项式函数的值:

vals = np.polyval(poly, t)
vals = np.polyval(poly, t)
print np.argmax(vals)
print np.argmin(vals)

NumPy中的sign函数可以返回数组中每个元素的正负符号,数组元素为负时返回-1,为正时返回1,否则返回0。

signs = np.sign(change)

可以使用piecewise函数来获取数组元素的正负,piecewise①函数可以分段给定取值:

pieces = np.piecewise(change, [change < 0, change > 0], [-1, 1])
print "Pieces", pieces

4.8 动手实践:避免使用循环

使用vectorize函数可以减少你的程序中使用循环的次数:

# 首先,读入数据:
o, h, l, c = np.loadtxt('BHP.csv', delimiter=',', usecols=(3, 4, 5, 6), unpack=True)
# 函数矢量化
func = np.vectorize(calc_profit)
profits = func(o, h, l, c)
# 矢量化后,对传入的数组,依次取出其元素赋值给函数变量,然后进行计算,但是第一组参数好像会被传进去两次
def calc_profit(open, high, low, close):
    # 以比开盘价稍低的价格买入
    buy = open * float(sys.argv[1])
    # daily range
    if low < buy < high :
        return (close - buy)/buy
    else:
        return 0
print "Profits", profits
real_trades = profits[profits != 0]

4.10 动手实践:使用hanning 函数平滑数据

调用hanning函数计算权重,生成一个长度为N的窗口:

N = int(sys.argv[1])
weights = np.hanning(N)
print "Weights", weights

使用polysub函数对多项式作差:

K = int(sys.argv[1])
t = np.arange(N - 1, len(bhp_returns))
poly_bhp = np.polyfit(t, smooth_bhp, K)
poly_vale = np.polyfit(t, smooth_vale, K)
poly_sub = np.polysub(poly_bhp, poly_vale)
xpoints = np.roots(poly_sub)
print "Intersection points", xpoints

用isreal函数来判断数组元素是否为实数:

reals = np.isreal(xpoints)
print "Real number?", reals

select函数可以根据一组给定的条件,从一组元素中挑选出符合条件的元素并返回数组:

xpoints = np.select([reals], [xpoints])
xpoints = xpoints.real
print "Real intersection points", xpoints

trim_zeros函数可以去掉一维数组中开头和末尾为0的元素:

print "Sans 0s", np.trim_zeros(xpoints)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值