使用 numpy 使用以时间为中心的“windows”计算运行平均值

Posted

技术标签:

【中文标题】使用 numpy 使用以时间为中心的“windows”计算运行平均值【英文标题】:Calculating a running average using time-centered "windows" using numpy 【发布时间】:2021-05-15 17:14:15 【问题描述】:

我有一个数据文本文件,其中包含在房间内进行的时间和温度测量。我想计算室温在 25 秒时间间隔内的运行平均值(落后 12 秒,提前 12 秒)。此外,我希望小于 12 秒的时间使用提前 12 秒但小于 12 秒,大于 15 秒的时间使用落后 15 秒但小于 15 秒。

以下是文本文件中的数据示例:

****************************************
# Room Temperature Data
****************************************
 Time(sec)  Temperature (F) 
 0.000000     70.723365  
 1.000000     71.680261  
 2.000000     70.688760  
 3.000000     70.808473  
 4.000000     71.312032  
 5.000000     71.092122  
 6.000000     70.709332  
 7.000000     71.304622  
 8.000000     71.750163  
 9.000000     72.351945  
 10.000000    73.295310  
 11.000000    74.050310  
 12.000000    74.263993  
 13.000000    73.812078  
 14.000000    73.849626  
 15.000000    73.987411  
 16.000000    74.891099  
 17.000000    74.779985  
 18.000000    75.671037  
 19.000000    75.816610  
 20.000000    76.651356  
 21.000000    76.419316  
 22.000000    75.513236  
 23.000000    76.234259  
 24.000000    76.728721  
 25.000000    76.832285  
 26.000000    77.067110  
 27.000000    77.743246  
 28.000000    78.542883  
 29.000000    78.436506  
 30.000000    77.641707  
 31.000000    78.297866  
 32.000000    79.028430  
 33.000000    78.522984  
 34.000000    78.421532  
 35.000000    78.708468  
 36.000000    78.463713  
 37.000000    78.078904  
 38.000000    78.865942  
 39.000000    79.072956  
 40.000000    79.827616  
 41.000000    78.946210  
 42.000000    79.194117  
 43.000000    79.871765  
 44.000000    80.085492  
 45.000000    80.440528  
 46.000000    80.836500  
 47.000000    81.725440  
 48.000000    82.491217  
 49.000000    81.830982  
 50.000000    82.190160  
 51.000000    81.254962  
 52.000000    81.835875  
 53.000000    82.459993  
 54.000000    81.881924  
 55.000000    81.921508  
 56.000000    82.496043  
 57.000000    82.507862  
 58.000000    83.490328  
 59.000000    83.438183  
 60.000000    83.351193  
 61.000000    75.320445  
 62.000000    74.922264  
 63.000000    75.172929  
 64.000000    75.732617  
 65.000000    75.574824  
 66.000000    75.888783  
 67.000000    75.736023  
 68.000000    75.439475  
 69.000000    75.688731  
 70.000000    76.311728  
 71.000000    76.299164  
 72.000000    75.405466 

谢谢!

【问题讨论】:

【参考方案1】:

只需使用 convolve 在移动窗口中求和,然后除以窗口大小。

import numpy as np

arr = np.random.rand(100)

cummean = np.convolve(arr, [1]*24, mode="valid")/24

【讨论】:

以上是关于使用 numpy 使用以时间为中心的“windows”计算运行平均值的主要内容,如果未能解决你的问题,请参考以下文章

使用以向量为输入的递归方法时的分段错误

使用以 X 轴为因素的 `geom_line()`

使numpy数组的负值变为正

在 Swift 中使用以函数为参数的 C 函数

使 cx_Freeze main.py 永久能够使用 numpy 模块

对不存在的数组使用 numpy 视图