【问题标题】:Summing until time-condition is reached in Python在 Python 中求和直到达到时间条件
【发布时间】:2018-08-05 17:55:38
【问题描述】:

我想在我的动态模型中总结一个特定但滚动的时期。形式表示如下

运行方程式的简单代码 sn-p 是:

import numpy as np
import pandas as pd
import operator 

year = np.arange(50)
m_ = [50, 30, 15]
a = [25, 15, 7.5]
ARC_ = [38, 255, 837]
r = 0.03

我尝试从m_ 中减去list(map(operator.sub, m_, a))) 列表a,正如在另一篇文章中找到的那样。

我的失败尝试如下所示:

for t in year:
    for i in range(0, 3):
        while t < t+(list(map(operator.sub, m_, a))):
            L_[t] = sum(ARC_[i] / (1+r) ** t)

【问题讨论】:

  • 目标是按元素 a 减去 m,即得到一个列表 [25, 15, 7.5] 然后迭代 for each t: (while t &lt; t + 25 then while t &lt; t+15 then while t &lt; t + 7.5) 并且在进行总和计算并将其存储在某处时(如何? ) ?顺便说一句,while 循环不是无限的吗?
  • 有几点不清楚:while 的边界添加了一个值和一个列表?虽然调用了 sum,但求和只有一个表达式?
  • 难道你的公式应该是L_i = ...?或者,也许您还想总结 i(就像您在实施中所做的那样)?
  • L 确实是 i 特定的。对此感到抱歉。稍后根据概率汇总各个总和。

标签: python sum conditional


【解决方案1】:

我完全不确定我是否理解正确,我试图将我的答案建立在等式的基础上。即使它与您期望的结果仍有一些差距,但它可能会帮助您解决问题。

我创建一个结果列表来存储 L[t] 的每个值,即 50 个值。然后我计算每对 (t,i) 的总和的开始/停止并计算它。

import numpy as np

years = np.arange(50)
m_ = [50, 30, 15]
a = [25, 15, 7.5]
ARC_ = [38, 255, 837]
r = 0.03

result = []

for t in years:
    s = 0

    for i in range(3):
        t0 = t
        tf = t + m_[i]-a[i]
        for k in range(int(t0), int(tf+1)):
            s += ARC_[i] / (1+r) ** t

    result.append(s)

如果您想要计算 m 和 a 之间的元素差异,一个简单的解决方案是:

[m_[i] - a[i] for i in range(len(m_))]

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 2016-11-16
    • 2012-07-11
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    相关资源
    最近更新 更多