【问题标题】:How to calculate average of every three consecutive elements skipping one element after every iteration如何计算每次迭代后跳过一个元素的每三个连续元素的平均值
【发布时间】:2018-01-01 00:15:31
【问题描述】:

这是一个列表。

 1 2 3 4 5 6 7 8 9 10. 

我想计算每三个连续元素的平均值。例如,输出将是:

NA NA 2 3 4 5 6 7 8 9

如何做到这一点?

问候

【问题讨论】:

  • 您是否尝试过自己解决?还是谷歌一下?

标签: python python-2.7 python-3.x pandas


【解决方案1】:

如果您更喜欢非 Pandas 解决方案,您仍然可以完成工作:

import statistics
[statistics.mean(x) for x in zip(data, data[1:], data[2:])]
# [2, 3, 4, 5, 6, 7, 8, 9]

【讨论】:

    【解决方案2】:

    使用滚动窗口:

    In [117]: s = pd.Series('1 2 3 4 5 6 7 8 9 10'.split())
    
    In [118]: s
    Out[118]:
    0     1
    1     2
    2     3
    3     4
    4     5
    5     6
    6     7
    7     8
    8     9
    9    10
    dtype: object
    
    In [119]: s.rolling(3).mean()
    Out[119]:
    0    NaN
    1    NaN
    2    2.0
    3    3.0
    4    4.0
    5    5.0
    6    6.0
    7    7.0
    8    8.0
    9    9.0
    dtype: float64
    

    【讨论】:

    • 你比我快 2 秒 :(
    • @cᴏʟᴅsᴘᴇᴇᴅ,你今天已经打败了我好几次了... ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    相关资源
    最近更新 更多