从列表创建总和列表

时间:2018-12-03 15:29:59

标签: python pandas numpy

我正在处理实验数据,在该数据中创建从45°C到5°C,然后再到45°C的温度曲线。 由于记录了从45°C到5°C的冷却和从5°C到45°C的加热,绘制数据会导致循环。但是由于我需要使图显示为“按时间顺序”,所以每个温度都必须是唯一的。

图像显示了我所需的视觉说明。 Visual explanation

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

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

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

如果有人知道该怎么做或对如何完成工作有更聪明的想法,那将是很棒的事情!

3 个答案:

答案 0 :(得分:6)

由于该问题被标记为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])

答案 1 :(得分:1)

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]

答案 2 :(得分:0)

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)

这应该可以解决问题。