python diff_python – 类似于numpy的diff的函数

编辑1:OP在我给出第一个答案后更新了他的问题.更新后的答案可以在EDIT2之后找到.

不知道你究竟尝试做什么,但在这种情况下你可以简单地做以下事情以获得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. ])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值