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):
611611 def cumprod (self , dim = None ):
612612 return px .reduction .cumprod (self , dim )
613613
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+
614623 # Reshaping and reorganizing
615624 # https://docs.xarray.dev/en/latest/api.html#id8
616625 def transpose (
Original file line number Diff line number Diff line change @@ -491,3 +491,22 @@ def test_indexing_renames_into_update_variable():
491491 expected_result = x_test .copy ()
492492 expected_result [idx_test ] = y_test
493493 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