我想知道是否存在一个函数,它会同时计算移动平均线并将其与var tiempo = '<?php
$result = fopen("file.txt", "r");
$RES = fread($result,"3");
echo $RES;
?>';
结合起来?
如果你有一个数组,你可以计算移动窗口的平均值(移动平均值)并计算该平均值和下一个元素之间的差值。
示例:
np.diff
我将如何实现它,以便时间计算不会那么长,因为我想将它用于26000个元素和更高a = [1, 3, 4, 5, 15, 14, 16, 13]
b = np.diff(a)
#np.diff makes something like this: `[n] - [n-1]`
#I want something like this: `[n] - np.mean([n-m : n])`
#I would like to have a function, where I could vary `m`:
m = 2
d = [2, 1.5, 10.5, 4, 1.5, -2]
的数组?
答案 0 :(得分:3)
编辑1:OP在我给出第一个答案后更新了他的问题。更新的答案可以在EDIT2之后找到。
不确定您尝试做什么,但在这种情况下,您只需执行以下操作即可获得diff
:
import numpy as np
diff = np.array(array[n-1:]) - np.array(average[:-n+2])
然后diff
将是所需的输出:
array([ 2. , 1.5, 10.5, 4. , 1.5, -2. ])
因此,您首先使用参数n
对列表进行切片,然后将列表转换为数组并相互减去它们。如果a)你的列表具有相同的长度,b)n
是你的索引而不是你想要开始的元素,并且c)如果你使用numpy数组而不是list,那么上面的代码行会更简单:
import numpy as np
# add one additional value so that the arrays have the same length
myArray = np.array([1, 3, 4, 5, 15, 14, 16, 13, 17])
# choose the starting index rather than the element
n = 2
myAverage = np.array([2, 3.5, 4.5, 10, 14.5, 15, 14.5])
diffAr = myArray[n:] - myAverage
然后diffAr
看起来像这样(因为我向myArray
添加了一个元素,因此比你的情况多了一个元素):
array([ 2. , 1.5, 10.5, 4. , 1.5, -2. , 2.5])
只是一般性评论:请不要将array
和diff
用作变量名称。
EDIT2:
你改变了你的问题;这里现在是一个更新的答案。在上面的答案中,唯一需要添加的是在给定窗口大小m
的情况下计算运行平均值的方法。在那之后,我可以完全按照上面的做法做到:
import numpy as np
def runningMean(ar, m):
return np.convolve(ar, np.ones((m,))/m)[(m-1):]
a = np.array([1, 3, 4, 5, 15, 14, 16, 13])
m = 2
av = runningMean(a, m)
d = a[m:] - av[:-m]
在这种情况下,d
包含所需的输出:
array([ 2. , 1.5, 10.5, 4. , 1.5, -2. ])