Numpy 寻找连续元素之间差异的矢量化方法?可能是np.diff()的变体?
我想找出数组中连续元素的两种类型的差异。 其中一项是: 差异1=[x1-x0,x2-x1,x3-x2,…] 这一点,我能够使用numpy库中的np.diff()函数实现。然而,我想要的另一种差异是: diff2=[x0-x1,x1-x2,x2-x3,…] 我可以使用for循环实现这一点,但是,数组的大小相当大。这有矢量化的函数吗Numpy 寻找连续元素之间差异的矢量化方法?可能是np.diff()的变体?,numpy,math,statistics,Numpy,Math,Statistics,我想找出数组中连续元素的两种类型的差异。 其中一项是: 差异1=[x1-x0,x2-x1,x3-x2,…] 这一点,我能够使用numpy库中的np.diff()函数实现。然而,我想要的另一种差异是: diff2=[x0-x1,x1-x2,x2-x3,…] 我可以使用for循环实现这一点,但是,数组的大小相当大。这有矢量化的函数吗 此外,我不确定这些差异在统计中被称为什么?或者如果有这样一个操作的术语。由于不确定这种操作叫什么,我无法在互联网上查找解决方案 如果您正在r中寻找解决方案(正如您在问题
此外,我不确定这些差异在统计中被称为什么?或者如果有这样一个操作的术语。由于不确定这种操作叫什么,我无法在互联网上查找解决方案 如果您正在
r
中寻找解决方案(正如您在问题中标记的那样),您可以从dplyr
软件包中使用lag
/lead
功能
在这里,为了说明这一点,我创建了一个伪向量,将其转换为data.frame以用于dplyr
,然后函数mutate
使用相应的函数创建一个新列:
set.seed(123)
df%突变(Diff1=A-滞后(A),Diff2=A-超前(A))
A Diff1 Diff2
1 3 NA 0
2 3 0 -7
3 10 7 8
4 2 -8 -4
5 6 4 1
6 5 -1 1
7 4 -1 -2
8 6 2 -3
9 9 3 -1
10101NA
它是否回答了您的问题?如果您正在
r
中寻找解决方案(当您在问题中标记它时),您可以使用lag
/lead
功能从dplyr
软件包中获得
在这里,为了说明这一点,我创建了一个伪向量,将其转换为data.frame以用于dplyr
,然后函数mutate
使用相应的函数创建一个新列:
set.seed(123)
df%突变(Diff1=A-滞后(A),Diff2=A-超前(A))
A Diff1 Diff2
1 3 NA 0
2 3 0 -7
3 10 7 8
4 2 -8 -4
5 6 4 1
6 5 -1 1
7 4 -1 -2
8 6 2 -3
9 9 3 -1
10101NA
它能回答你的问题吗?使用@thelatemail和@r2evans建议的
diff
,这很简单。但是,另一种选择是使用头部
和尾部
diff1 <- tail(x, -1) - head(x, -1)
diff1
#[1] 7 -8 6 -2 3 -8 6 -2 -1
diff2 <- head(x, -1) - tail(x, -1)
diff2
#[1] -7 8 -6 2 -3 8 -6 2 1
diff1使用@thelatemail和@r2evans建议的diff
,非常简单。但是,另一种选择是使用头部
和尾部
diff1 <- tail(x, -1) - head(x, -1)
diff1
#[1] 7 -8 6 -2 3 -8 6 -2 -1
diff2 <- head(x, -1) - tail(x, -1)
diff2
#[1] -7 8 -6 2 -3 8 -6 2 1
@Divakar的评论:
diff2将是简单的-np.diff(a)或更有效的[:-1]-a[1:]
数组中包含一个
是我一直在寻找的完美解决方案。@Divakar评论:
diff2将是简单的-np.diff(a)或更有效的[:-1]-a[1:]
数组中包含一个
是我正在寻找的完美解决方案。看看?diff
正如最近的邮件所说,使用diff
命令。然后,diff2您应该能够只做数学运算。下面是一个使用向量的示例<代码>xAhhh,您刚刚删除了标记。。。是的,标签不正确确实会使谈话偏离正确的方向。您正在为diff2
?@DevanshiSukhijadiff2
寻找一个只使用python的解决方案,它将是-np.diff(a)
或更高效的a[:-1]-a[1://code>,其中a
作为数组。请查看?diff
,正如最近的邮件所述,使用diff
命令。然后,diff2您应该能够只做数学运算。下面是一个使用向量的示例<代码>xAhhh,您刚刚删除了标记。。。是的,标签不正确确实会使谈话偏离正确的方向。您正在为diff2
寻找一个只使用python的解决方案?@DevanshiSukhijadiff2
将是-np.diff(a)
或更高效的a[:-1]-a[1://code>和a
作为数组。