GVKun编程网logo

我可以自动计算 tcl 中某些数据的移动平均值吗?(我可以自动计算 tcl 中某些数据的移动平均值吗)

12

最近很多小伙伴都在问我可以自动计算tcl中某些数据的移动平均值吗?和我可以自动计算tcl中某些数据的移动平均值吗这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展awk计算数据的和和

最近很多小伙伴都在问我可以自动计算 tcl 中某些数据的移动平均值吗?我可以自动计算 tcl 中某些数据的移动平均值吗这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展awk 计算数据的和和平均值、MS Excel:每项费用过去 12 个月的移动平均值(带当前日期)、numpy.convolve的加权移动平均值、Python假设包:我可以确保使用某些值吗?等相关知识,下面开始了哦!

本文目录一览:

我可以自动计算 tcl 中某些数据的移动平均值吗?(我可以自动计算 tcl 中某些数据的移动平均值吗)

我可以自动计算 tcl 中某些数据的移动平均值吗?(我可以自动计算 tcl 中某些数据的移动平均值吗)

如何解决我可以自动计算 tcl 中某些数据的移动平均值吗??

我编写了一个程序来计算某些数据的移动平均值。问题是我不能自动化,我的意思是如果我想通过 10 步或更多的步骤来完成这个过程,用交换条款写 10 行是不明智的。

按 4 步计算移动平均值的部分是:

     set aux  [lindex $line 4]
     set T [lindex $line 1]
     set aux1 [lrange $valores 1 1]
       set valores [lreplace $valores 0 0 $aux1] 
       
     set aux1 [lrange $valores 2 2]
       set valores [lreplace $valores 1 1 $aux1]
     
     set aux1 [lrange $valores 3 3]
       set valores [lreplace $valores 2 2 $aux1]
       
     set aux1 [lrange $valores 4 4]
       set valores [lreplace $valores 3 3 $aux1]
     
       set valores [lreplace $valores 4 4 $aux]
       set promP [avg $valores]

我知道我必须使用 for 循环,但我所做的尝试没有奏效。

解决方法

假设您对数据保持一个窗口,这并不太难。诀窍是制定一个程序来完成关键工作。

set WINDOW_SIZE 10
set storedData {}

proc updateMovingAverage {value} {
    global storedData WINDOW_SIZE

    set storedData [lreplace [list {*}$storedData $value] 0 end-$WINDOW_SIZE]
    return [expr {[tcl::mathop::+ {*}$storedData] / double([llength $storedData])}]
}

或者你可以创建一个类:

oo::class create MovingAverage {
    variable window size

    constructor {{windowSize 10}} {
        set window {}
        set size $windowSize
    }

    method item {value} {
        set window [lreplace [list {*}$window $value] 0 end-$size]
        return
    }

    method average {} {
        return [expr {[tcl::mathop::+ {*}$window] / double([llength $window])}]
    }
}

该类将添加项目和计算平均值分开。后者现在是 Tcl 中的标准模式。添加项目的技巧是将项目附加到列表中,如果列表的前面大于所需的窗口,则修剪掉它; list {*}$thing $value 执行 append-an-item,而 lreplace THING 0 end-$wantedLength 执行前缀修剪(用空的项目序列替换它们)。


这是一个更高效的版本。

oo::class create MovingAverage {
    variable window size index

    constructor {{windowSize 10}} {
        set window {}
        set size $windowSize
        set index 0
    }

    method item {value} {
        lset window $index $value
        set index [expr {($index + 1) % $size}]
        return
    }

    method average {} {
        return [expr {[tcl::mathop::+ {*}$window] / double([llength $window])}]
    }
}

这使用的事实是,从 8.6 开始(完全巧合的是,当集成类时),lset 命令可以将项目附加到列表中。

,

一个协程版本,比如评论中提到的Donal:

[ServiceContract]
public interface IDiscoveryService
{
  ValueTask<SaveDiscoveryResultResponse> SaveDiscoveryResultAsync(IAsyncEnumerable<SaveDiscoveryResultRequest> request);
}

它和类版本比标准 proc 版本(如 Donal 的第一个示例)有优势,因为它不依赖于任何全局变量,因此您可以同时计算具有不同窗口大小的多个不同数据集不同协程/对象中的时间。

awk 计算数据的和和平均值

awk 计算数据的和和平均值

awk 计算数据的和和平均值

2014年12月02日 21:11:12 HaveFunInLinux 阅读数:14487更多
个人分类: 小技巧
 

本文译至:http://d.hatena.ne.jp/leetmikeal/20130117/1358423717

有如下的log文件:


最右边的数值表示数据。计算一下数据的和。

最开始的{} ,定义sum变量,累加数据。

最后,在END内 print sum 输出和.

然后,计算一下平均值。

MS Excel:每项费用过去 12 个月的移动平均值(带当前日期)

MS Excel:每项费用过去 12 个月的移动平均值(带当前日期)

将 AVERAGEIFS 与 EDATE 结合使用:

=AVERAGEIFS('Despenses'!E:E,'Despenses'!G:G,A2,'Despenses'!C:C,">="&EDATE(EOMONTH(TODAY(),-1)+1,-12))

numpy.convolve的加权移动平均值

numpy.convolve的加权移动平均值

我正在写一个使用numpy中的卷积函数的移动平均函数,它应该等效于(加权移动平均)。当我的权重全部相等时(如简单的算术平均值),它可以正常工作:

data = numpy.arange(1,11)numdays = 5w = [1.0/numdays]*numdaysnumpy.convolve(data,w,''valid'')

array([ 3.,  4.,  5.,  6.,  7.,  8.])

但是,当我尝试使用加权平均值时

w = numpy.cumsum(numpy.ones(numdays,dtype=float),axis=0); w = w/numpy.sum(w)

而不是(对于相同的数据)3.667,4.667,5.667,6.667,…我希望,我得到

array([ 2.33333333,  3.33333333,  4.33333333,  5.33333333,  6.33333333,        7.33333333])

如果删除“有效”标志,则什至看不到正确的值。我真的很想对WMA和MA使用convolve,因为它可以使代码更整洁(相同的代码,不同的权重),否则我认为我必须遍历所有数据并进行切片。

有关此行为的任何想法吗?

答案1

小编典典

您想要的是np.correlate卷积运算中的第二个参数基本上被反转,因此您的预期结果将是np.convolve(data, w[::-1], ''valid'')

Python假设包:我可以确保使用某些值吗?

Python假设包:我可以确保使用某些值吗?

您可以使用@example装饰器来确保正在测试某些示例。

这是hypothesis's quick start guide中的示例:

from hypothesis import given,example
from hypothesis.strategies import text

@given(text())
@example('')
def test_decode_inverts_encode(s):
    assert decode(encode(s)) == s

在这里,@example('')确保以空白字符串为例运行测试。

我还没有完全了解您的方案的详细信息,但是也许您可以根据自己的需要调整此示例。

关于我可以自动计算 tcl 中某些数据的移动平均值吗?我可以自动计算 tcl 中某些数据的移动平均值吗的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于awk 计算数据的和和平均值、MS Excel:每项费用过去 12 个月的移动平均值(带当前日期)、numpy.convolve的加权移动平均值、Python假设包:我可以确保使用某些值吗?的相关信息,请在本站寻找。

本文标签: