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