Numpy金融函数的应用

一、专用函数

import numpy as np

#元素抽取
a = np.arange(10)

# 生成一个抽取数组元素的花式索引
condition = a %2 ==0    #赋值运算符,算术运算符,逻辑运算符优先级
print("花式索引:",condition)

# np.extract()根据给点的条件提取数组元素
even = np.extract(condition,a)
print("数组中的偶数项:",even)

#用数组的compress方法提取元素
even2 = a.compress(condition)
print(even2)

# numpytake函数实现提取偶函数项 np.where
indices = np.where(a % 2 ==0)
print("偶数项元素的索引:",indices)
print("even3:",np.take(a,indices))


# 提取数组中的非0元素 np.nonzero()
arr = np.array([[0,1,2],
                [0,3,4],
                [0,5,6]])

rows,cols = np.nonzero(arr)
print("rows",rows)
print("cols",cols)

result = np.dstack((rows,cols))
print(result)

二、金融函数

'''
1fv函数
    np.fv(rate,nper,pmt,pv)
    rate:存款/贷款每期的利率
    nper:存款/贷款期数
    pmt:存款/贷款每期支付的金额
    pv:存款/贷款金额
    
    # 举例:某用户去银行存款,假设年利率3%、每季度续存金额
    # 10元、存5年以及存款1000,则计算5年后可领取多少金额。
    rate = 0.03/4
    nper = 5*4
    pmt = -10
    pv = 1000
    '''
    # 举例:某用户去银行存款,假设年利率3%、每季度续存金额
    # 10元、存5年以及存款1000,则计算5年后可领取多少金额。
    final = np.fv(0.03/4,5*4,-5000,-10000)
    print("5年后可领取多少金额:",final)
    # 计算每一年过后能得到的本息和
    for year in range(1,6):
        fv = np.fv(0.03 / 4,4*year,-5000,-10000)
        print("{}年后本息和为:".format(year),fv)
    
    '''
2fv函数
    np.fv(rate,nper,pmt,pv)
    rate:存款/贷款每期的利率
    nper:存款/贷款期数
    pmt:存款/贷款每期支付的金额
    fv:存款/贷款终值,如果是贷款,终值为0;如果是存款,终值为本息和
    '''
    # 举例:某用户去银行存款,假设年利率3%、每季度续存金额10
    # 元、存5年后可领1376.0963320,则计算5年前存取的本金是多
    # 少金额。
    
    pv = np.pv(0.03/4,5*4,-10,1376)
    print("第一次存款金额为:",np.round(pv))
    
    '''
3、净现值( net present value)定义为按折现率计算的净现金流之和。
    净现值是指投资方案所产生的【现金净流量】(流入-流出)以资金成本为贴现
    率折现之后与原始投资额现值的差额
    np.npv(rate,values)
    rate:存款/贷款每期的利率
    values:现金流
    
    '''
    # 举例:投资100,支出39 59 55 20 折现率为28.1% 则净现值为:
    result = np.npv(0.281,[-100, 39, 59, 55, 20])
    print("净现值为:",result)

'''
4 pmt函数——根据本金和利率计算每期需支付的金额。
    np.pmt(rate,nper,pv)
    rate:存款/贷款每期的利率
    nper:存款/贷款期数
    pv:存款/贷款金额
    '''
    # 举例:某同学房贷20万,准备15年还清,年利率为7.5%,则每
    # 月需还贷多少金额?
    pmt = np.pmt(0.075/12,15*12,200000)
    print("每期需要还款:{}".format(pmt))
    
    '''
# 5 nper函数——计算定期付款的期数
    np.nper(rate,pmt,pv,fv)
    rate:存款/贷款每期的利率
    pmt:存款/贷款每期支付的金额
    pv:存款/贷款金额
    fv:存款/贷款终值,如果是贷款,终值为0;如果是存款,终值为本息和
    '''
    # 举例:某同学房贷20万,年利率为7.5%,每月能还贷2000,则
    # 需要还多少期?
    months = np.ceil(np.nper(0.075/12,-2000,200000))
    print("需要还款{}".format(months))
    
    #月转化为年
    year = np.ceil(months/12)
    print("需要还款{}".format(year))


# 练习:小明房贷70万,年利率4%,准备还20年,则每月月供多少?
pmt = np.ceil(np.pmt(0.04/12,20*12,700000))
print("每期需要还款{}".format(-pmt))

猜你喜欢

转载自blog.csdn.net/sinat_30353259/article/details/80508854