python - python数组的迭代操作(指数移动平均)
问题描述
对于(n,m)
( n>=1e6, m>=10
) python array a
,我想b
通过对其应用以下递归操作来派生一个新数组:
b(i, j) = nan if i=0
= (1 - k) * a(i-1, j) + k * a(i, j) if i=1
= (1 - k) * b(i-1, j) + k * a(i, j) if i>1
其中k
是一个固定参数,因此0 < k < 1
注意:数组的大小因此速度(优化/矢量化计算)很重要,以便能够运行使用许多此类操作的完整模拟。可以按如下方式生成
样本:a
import numpy as np
a = np.random.normal(0,1,10) # For m=10
for _ in range(1,1e6): # For n=1e6
a = np.c_[a, np.random.normal(0,1,10)]
a = a.transpose()
基于小样本输入的样本输出a
,n=m=3
和k=0.5
(注意最后一行)。基本上这是计算指数衰减的平均值:
a = [[1, 2, 3],
[10, 20, 30],
[100, 200, 300]]
a = np.array(a)
# Expected solution for b is following:
b = [[nan, nan, nan],
[5.5, 11, 16.5],
[52.75, 105.5, 158.25]] # (100 + 5.5)/2 = 52.75, (200 + 11)/2 = 105.5, ...
# And below is not expected outcome (last row is not correct here)
b = [[nan, nan, nan],
[5.5, 11, 16.5],
[55, 110, 165]]
解决方案
推荐阅读
- go - cgo如何抑制警告
- android - SeekbarPreference 中的边距
- apache - spring boot 应用程序与 apache 负载平衡
- c# - Moq - 无法从 IGenericRepository 转换为 Generic Repository
- laravel-5 - Laravel 5.7 + 字体真棒
- c# - 循环通过设置列号(3)但长度可变的文本文档
- c# - C# 正则表达式解析有时在数字旁边包含额外空格的字符串
- python - 带有 JSon 的 GraphQL 和 Python - 未转义字符的语法错误
- python - pywinauto 没有连接到 After Effects?
- vb.net - 当 Combox 指示器选择为 yes 时复选框启用(vb.net)