File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -611,6 +611,15 @@ def cumsum(self, dim=None):
611
611
def cumprod (self , dim = None ):
612
612
return px .reduction .cumprod (self , dim )
613
613
614
+ def diff (self , dim , n = 1 ):
615
+ """Compute the n-th discrete difference along the given dimension."""
616
+ slice1 = {dim : slice (1 , None )}
617
+ slice2 = {dim : slice (None , - 1 )}
618
+ x = self
619
+ for _ in range (n ):
620
+ x = x [slice1 ] - x [slice2 ]
621
+ return x
622
+
614
623
# Reshaping and reorganizing
615
624
# https://docs.xarray.dev/en/latest/api.html#id8
616
625
def transpose (
Original file line number Diff line number Diff line change @@ -491,3 +491,22 @@ def test_indexing_renames_into_update_variable():
491
491
expected_result = x_test .copy ()
492
492
expected_result [idx_test ] = y_test
493
493
xr_assert_allclose (result , expected_result )
494
+
495
+
496
+ @pytest .mark .parametrize ("n" , ["implicit" , 1 , 2 ])
497
+ @pytest .mark .parametrize ("dim" , ["a" , "b" ])
498
+ def test_diff (dim , n ):
499
+ x = xtensor (dims = ("a" , "b" ), shape = (7 , 11 ))
500
+ if n == "implicit" :
501
+ out = x .diff (dim )
502
+ else :
503
+ out = x .diff (dim , n = n )
504
+
505
+ fn = xr_function ([x ], out )
506
+ x_test = xr_arange_like (x )
507
+ res = fn (x_test )
508
+ if n == "implicit" :
509
+ expected_res = x_test .diff (dim )
510
+ else :
511
+ expected_res = x_test .diff (dim , n = n )
512
+ xr_assert_allclose (res , expected_res )
You can’t perform that action at this time.
0 commit comments