numpy数组时间点当前值

问题描述

我有少量的未来现金流量,折现率为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