【问题标题】:Create a list of sums from a list [duplicate]从列表中创建总和列表[重复]
【发布时间】:2018-12-03 15:29:58
【问题描述】:

我正在处理实验数据,我创建了一个从 45 °C 到 5 °C 再到 45 °C 的温度曲线。 由于记录了从 45°C 到 5°C 的冷却和从 5°C 到 45°C 的加热,因此将数据绘制成一个循环。但由于我需要情节显示为“按时间顺序”,因此每个温度都必须是独一无二的。

图片显示了我需要什么的视觉解释。

因此,我所做的是使用 numpys“diff”函数从每个连续的温度间隔中获取差异。到目前为止,一切都很好。 现在为了制作一个有用的情节,我需要以某种方式创建一个新列表,其中每个项目都是之前项目的总和。

我正在寻找的一个小例子:

my_list = [1,2,5,1,4,2,3]
#some operation
result_list = [1,3,8,9,13,15,18]

如果有人知道如何做到这一点或有更聪明的想法如何完成工作,那就太好了!

【问题讨论】:

  • np.cumsum(my_list).

标签: python pandas numpy


【解决方案1】:

由于这个问题被标记为numpy,但由于某种原因,没有人发布 numpy 解决方案...使用numpy.cumsum。 :)

>>> my_list = [1,2,5,1,4,2,3] # could also be a numpy array
>>> np.cumsum(my_list)
array([ 1,  3,  8,  9, 13, 15, 18])

【讨论】:

    【解决方案2】:

    itertools 有一个很好的功能,叫做accumulate,正是这样做的:

    from itertools import accumulate
    
    lst = [1,2,5,1,4,2,3]
    result_list = list(accumulate(lst))
    print(result_list)  # -> [1, 3, 8, 9, 13, 15, 18]
    

    【讨论】:

      【解决方案3】:
      my_list = [1,2,5,1,4,2,3]
      result_list = [my_list[0]]
      
      for i in my_list[1:]:
          result_list.append(result_list[-1] + i)
      

      这应该可以解决问题。

      【讨论】:

      • 这有点hacky。使用enumerate 会更直接。
      • 是的,我打算删除它,但保留了它,因为已经选择了更好的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 2011-11-10
      • 2016-10-21
      • 2019-09-25
      • 1970-01-01
      相关资源
      最近更新 更多