一、专用函数
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)
# 用numpy的take函数实现提取偶函数项 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)
二、金融函数
'''
1、fv函数
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)
'''
2、fv函数
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))