您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 类似于numpy的diff的函数

5b51 2022/1/14 8:22:01 python 字数 3456 阅读 545 来源 www.jb51.cc/python

我想知道是否存在一个函数,它会同时计算移动平均值并将其与np.diff结合起来?如果你有一个数组,你可以计算移动窗口的平均值(移动平均值)并计算该平均值和下一个1元素之间的差值.例:a = [1, 3, 4, 5, 15, 14, 16, 13] b = np.diff(a) #np.diff makes something like this: `[n]

概述

我想知道是否存在一个函数,它会同时计算移动平均值并将其与np.diff结合起来?

如果你有一个数组,你可以计算移动窗口的平均值(移动平均值)并计算该平均值和下一个1元素之间的差值.

例:

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,-2]

我将如何实现它,以便时间计算不会那么长,因为我想将它用于26000个元素和更高m的数组?

不知道你究竟尝试做什么,但在这种情况下你可以简单地做以下事情以获得diff:

import numpy as np
diff = np.array(array[n-1:]) -  np.array(average[:-n+2])

然后diff将是所需的输出

array([  2.,4.,-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,13,17]) 

# choose the starting index rather than the element
n = 2

myAverage = np.array([2,3.5,4.5,10,14.5,14.5])

diffAr = myArray[n:] - myAverage

然后diffAr看起来像这样(因为我向myArray添加一个元素,因此比你的情况多一个元素):

array([  2.,-2.,2.5])

只是一般性评论:请不要使用数组和差异作为变量名称.

EDIT2:

你改变了你的问题;这里现在是一个更新的答案.在上面的答案中,唯一需要添加的是在给定窗口大小m的情况下计算运行平均值的方法.在那之后,我可以完全按照上面的做法做到:

import numpy as np

def runningMean(ar,m):

    return np.convolve(ar,np.ones((m,))/m)[(m-1):]

a = np.array([1,13])
m = 2
av = runningMean(a,m)

d = a[m:] - av[:-m]

在这种情况下,d包含所需的输出

array([  2.,-2. ])

总结

以上是编程之家为你收集整理的python – 类似于numpy的diff的函数全部内容,希望文章能够帮你解决python – 类似于numpy的diff的函数所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶