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 @@ -535,6 +535,15 @@ def cumsum(self, dim):
535
535
def cumprod (self , dim ):
536
536
return px .reduction .cumprod (self , dim )
537
537
538
+ def diff (self , dim , n = 1 ):
539
+ """Compute the n-th discrete difference along the given dimension."""
540
+ slice1 = {dim : slice (1 , None )}
541
+ slice2 = {dim : slice (None , - 1 )}
542
+ x = self
543
+ for _ in range (n ):
544
+ x = x [slice1 ] - x [slice2 ]
545
+ return x
546
+
538
547
# Reshaping and reorganizing
539
548
# https://docs.xarray.dev/en/latest/api.html#id8
540
549
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