问题描述
我有少量的未来现金流量,折现率为0.01。我想计算每个时间点的未来现金流量的现值。例如,如果我想计算t = 0的当前值,我会这样做:
cash_flow = np.array([3,4,5,3,5])
pv_0 = sum(cf/((1+0.01)**i) for i,cf in emunerate(cash_flow,start=1))
所以在t = 1时,我会做同样的事情,除了将所有内容向前移动一个周期:
cash_flow_1 = np.array([4,5])
pv_1 = sum(cf/((1+0.01)**i) for i,cf in emunerate(cash_flow_1,start=1))
我希望最终结果是一个numpy数组,作为原始的cash_flow数组。有比在每个元素上编写for循环更聪明的方法吗?
编辑: 受到以下对话的启发,我有一个“数组”方法(这只是我说不循环的方式...):
discount_array = np.geomspace((1/1.01)**5,1/1.01,5)
(np.cumsum(cash_flow[::-1]*discount_array)*np.geomspace((1.01)**4,1,5))[::-1]
解决方法
尝试以下方法:
final Pattern P = Pattern.compile("\\S \\S");
final Matcher m = P.matcher(test);
if (m.find()) {
System.out.println("There is between space!");
}
输出:
def cf_calc(arr):
return sum(cf/((1+0.01)**i) for i,cf in enumerate(arr,start=1))
cfs_array = np.array([])
for p in range(len(cash_flow)):
cfs_array = np.append(cfs_array,cf_calc(cash_flow[p:]))
cfs_array