【问题标题】:Calculate the rolling mean of every n-th element over an m-element window in python计算python中m元素窗口上每个第n个元素的滚动平均值
【发布时间】:2023-01-19 02:12:55
【问题描述】:

假设我有一个这样的向量:

s = pd.Series(range(50))

滚动总和,假设一个 2 元素窗口很容易计算:

s.rolling(window=2, min_periods=2).mean()
0    NaN
1    0.5
2    1.5
3    2.5
4    3.5
5    4.5
6    5.5
7    6.5
8    7.5
9    8.5
...

现在我不想为窗口取相邻的 2 个元素,但我想取例如每三个元素。仍然只拿最后2个。这将导致这个向量:

0    NaN 
1    NaN
2    NaN
3    1.5 -- (3+0)/2
4    2.5 -- (4+1)/2
5    3.5 -- (5+2)/2
6    4.5 -- ...
7    5.5
8    6.5
9    7.5
...

我怎样才能有效地实现这一目标?

谢谢!

【问题讨论】:

    标签: python pandas window rolling-computation


    【解决方案1】:

    在 numpy.ndarray.strides 属性中使用 stride 参数,它允许您指定在遍历数组时要在每个维度中步进的字节数。

    将 numpy 导入为 np arr = np.arange(10) strided = np.lib.stride_tricks.as_strided(arr, shape=(len(arr)//3, 3), strides=(3*arr.itemsize, arr.itemsize)) 结果 = np.mean(跨步[:, -2:], 轴=1)

    输出:

    阵列([1.5,2.5,3.5,4.5,5.5,6.5,7.5])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      相关资源
      最近更新 更多