numpy ediff1d 和 diff 的区别

15

从文档中,ediff1d 的注释提供了一些关于它在布尔数组上操作的信息,这可能是区别所在。 - Divakar
ediff1d 的功能类似于拉平后的数组的一阶差分,使用 a[1:] - a[:-1] 计算,并可以在开始和/或结束处填充输出数组 ediff1d(ary, to_end=None, to_begin=None)。而 diff 允许计算高于一阶差分的差分,还可以指定计算的数组维度...例如:np.diff(x, n=1) -> array([ 1, 2, 3, -7]),而 np.ediff1d(x, to_begin=-99, to_end=-98) 得到的结果是 ->array([-99, 1, 2, 3, -7, -98])。 - user1121588
1
@DanPatterson,原则上说diff更好,但会忽略填充。 - P3trus
2个回答

5

numpy 1.16.0 之前,我们可以使用 ediff1d(ar, to_end, to_begin) 来填充 ar[1:] - ar[-1:] 的结果。但从 1.16.0 开始,diff() 支持填充并涵盖了 ediff1d() 的所有功能和更多内容。此外,对于布尔数组,在大多数情况下,diff() 具有相同的性能,并且优于 ediff1d()


2

另一个区别是 diffprependappend 参数在差异计算之前应用,而 ediff1dto_beginto_end 在差异计算之后应用(因此它们不是相似的参数)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接