diff() can get the 1D or more D tensor of the zero or more elements of difference from the 1D or more D tensor of zero or more elements as shown below:
*Memos:
-
diff()
can be used with torch or a tensor. - The 1st argument(
input
) withtorch
or using a tensor(Required-Type:tensor
ofint
,float
,complex
orbool
). - The 2nd argument with
torch
or the 3rd argument isn
(Optional-Default:1
-Type:int
). *This can get the difference of the difference of diff... - The 3rd argument with
torch
or the 4th argument isdim
(Optional-Default:-1
-Type:int
). - The 4th argument with
torch
or the 5th argument isprepend
(Optional-Default:None
-Type:tensor
ofint
,float
,complex
orbool
). *A tensor is added beforeinput
tensor. - The 5th argument with
torch
or the 6th argument isappend
(Optional-Default:None
-Type:tensor
ofint
,float
,complex
orbool
). *A tensor is added afterinput
tensor. - There is
out
argument withtorch
(Optional-Default:None
-Type:tensor
): *Memos:-
out=
must be used. - My post explains
out
argument.
-
A 1D tensor:
import torch my_tensor = torch.tensor([4, 9, 1, 3, 0, 7]) torch.diff(input=my_tensor) my_tensor.diff() torch.diff(input=my_tensor, n=1, dim=0) torch.diff(input=my_tensor, n=1, dim=-1) # tensor([5, -8, 2, -3, 7]) torch.diff(input=my_tensor, n=2, dim=0) torch.diff(input=my_tensor, n=2, dim=-1) # tensor([-13, 10, -5, 10]) torch.diff(input=my_tensor, n=3, dim=0) torch.diff(input=my_tensor, n=3, dim=-1) # tensor([23, -15, 15]) torch.diff(input=my_tensor, n=4, dim=0) torch.diff(input=my_tensor, n=4, dim=-1) # tensor([-38, 30]) torch.diff(input=my_tensor, n=5, dim=0) torch.diff(input=my_tensor, n=5, dim=-1) # tensor([68]) torch.diff(input=my_tensor, n=0, dim=0) torch.diff(input=my_tensor, n=0, dim=1) torch.diff(input=my_tensor, n=0, dim=2) etc.. # tensor([4, 9, 1, 3, 0, 7]) torch.diff(input=my_tensor, n=6, dim=0) torch.diff(input=my_tensor, n=6, dim=-1) # tensor([], dtype=torch.int64) tensor1 = torch.tensor([4, 9, 1, 3, 0, 7]) tensor2 = torch.tensor([6]) tensor3 = torch.tensor([1, 4]) # [6, 4, 9, 1, 3, 0, 7, 1, 4] torch.diff(input=tensor1, n=1, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=1, dim=-1, prepend=tensor2, append=tensor3) # tensor([-2, 5, -8, 2, -3, 7, -6, 3]) torch.diff(input=tensor1, n=2, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=2, dim=-1, prepend=tensor2, append=tensor3) # tensor([7, -13, 10, -5, 10, -13, 9]) torch.diff(input=tensor1, n=3, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=3, dim=-1, prepend=tensor2, append=tensor3) # tensor([-20, 23, -15, 15, -23, 22]) torch.diff(input=tensor1, n=4, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=4, dim=-1, prepend=tensor2, append=tensor3) # tensor([43, -38, 30, -38, 45]) torch.diff(input=tensor1, n=5, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=5, dim=-1, prepend=tensor2, append=tensor3) # tensor([-81, 68, -68, 83]) torch.diff(input=tensor1, n=6, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=6, dim=-1, prepend=tensor2, append=tensor3) # tensor([149, -136, 151]) torch.diff(input=tensor1, n=7, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=7, dim=-1, prepend=tensor2, append=tensor3) # tensor([-285, 287]) torch.diff(input=tensor1, n=8, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=8, dim=-1, prepend=tensor2, append=tensor3) # tensor([572]) torch.diff(input=tensor1, n=0, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=0, dim=-1, prepend=tensor2, append=tensor3) # tensor([4, 9, 1, 3, 0, 7]) torch.diff(input=tensor1, n=8, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=8, dim=-1, prepend=tensor2, append=tensor3) # tensor([572]) tensor1 = torch.tensor([4., 9., True, 3., False, 7+0j]) tensor2 = torch.tensor([6+0j]) tensor3 = torch.tensor([True, 4+0j]) # [6, 4, 9, 1, 3, 0, 7, 1, 4] torch.diff(input=tensor1, n=1, dim=0, prepend=tensor2, append=tensor3) # tensor([-2.+0.j, 5.+0.j, -8.+0.j, 2.+0.j, # -3.+0.j, 7.+0.j, -6.+0.j, 3.+0.j])
A 2D tensor:
import torch my_tensor = torch.tensor([[4, 9, 1], [3, 0, 7]]) torch.diff(input=my_tensor) torch.diff(input=my_tensor, n=1, dim=1) torch.diff(input=my_tensor, n=1, dim=-1) # tensor([[5, -8], [-3, 7]]) torch.diff(input=my_tensor, n=2, dim=1) torch.diff(input=my_tensor, n=2, dim=-1) # tensor([[-13], [10]]) torch.diff(input=my_tensor, n=1, dim=0) torch.diff(input=my_tensor, n=1, dim=-2) # tensor([[-1, -9, 6]]) torch.diff(input=my_tensor, n=0, dim=0) torch.diff(input=my_tensor, n=0, dim=1) torch.diff(my_tensor, n=0, dim=2) etc... # tensor([[4, 9, 1], [3, 0, 7]]) torch.diff(input=my_tensor, n=2, dim=0) torch.diff(input=my_tensor, n=2, dim=-2) torch.diff(input=my_tensor, n=3, dim=0) torch.diff(input=my_tensor, n=3, dim=-2) # tensor([], size=(0, 3), dtype=torch.int64) torch.diff(input=my_tensor, n=3, dim=1) torch.diff(input=my_tensor, n=3, dim=-1) # tensor([], size=(2, 0), dtype=torch.int64) tensor1 = torch.tensor([[4, 9, 1], [3, 0, 7]]) tensor2 = torch.tensor([[6, 0, 5], [8, 1, 4]]) tensor3 = torch.tensor([[1, 4, 8], [0, 2, 9]]) # [[6, 0, 5, 4, 9, 1, 1, 4, 8], # [8, 1, 4, 3, 0, 7, 0, 2, 9]] # Or # [[6, 0, 5], # [8, 1, 4], # [4, 9, 1], # [3, 0, 7], # [1, 4, 8], # [0, 2, 9]] torch.diff(input=tensor1, n=5, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=5, dim=-2, prepend=tensor2, append=tensor3) # tensor([[19, -103, 44]]) torch.diff(input=tensor1, n=1, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=1, dim=-1, prepend=tensor2, append=tensor3) # tensor([[-6, 5, -1, 5, -8, 0, 3, 4], # [-7, 3, -1, -3, 7, -7, 2, 7]]) torch.diff(input=tensor1, n=2, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=2, dim=-1, prepend=tensor2, append=tensor3) # tensor([[11, -6, 6, -13, 8, 3, 1], # [10, -4, -2, 10, -14, 9, 5]]) torch.diff(input=tensor1, n=3, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=3, dim=-1, prepend=tensor2, append=tensor3) # tensor([[-17, 12, -19, 21, -5, -2], # [-14, 2, 12, -24, 23, -4]]) torch.diff(input=tensor1, n=4, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=4, dim=-1, prepend=tensor2, append=tensor3) # tensor([[29, -31, 40, -26, 3], # [16, 10, -36, 47, -27]]) torch.diff(input=tensor1, n=5, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=5, dim=-1, prepend=tensor2, append=tensor3) # tensor([[-60, 71, -66, 29], # [ -6, -46, 83, -74]]) torch.diff(input=tensor1, n=6, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=6, dim=-1, prepend=tensor2, append=tensor3) # tensor([[131, -137, 95], # [-40, 129, -157]]) torch.diff(input=tensor1, n=7, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=7, dim=-1, prepend=tensor2, append=tensor3) # tensor([[-268, 232], # [169, -286]]) torch.diff(input=tensor1, n=8, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=8, dim=-1, prepend=tensor2, append=tensor3) # tensor([[500], # [-455]]) torch.diff(input=tensor1, n=1, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=1, dim=-2, prepend=tensor2, append=tensor3) # tensor([[2, 1, -1], # [-4, 8, -3], # [-1, -9, 6], # [-2, 4, 1], # [-1, -2, 1]]) torch.diff(input=tensor1, n=2, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=2, dim=-2, prepend=tensor2, append=tensor3) # tensor([[-6, 7, -2], # [3, -17, 9], # [-1, 13, -5], # [1, -6, 0]]) torch.diff(input=tensor1, n=3, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=3, dim=-2, prepend=tensor2, append=tensor3) # tensor([[9, -24, 11], # [-4, 30, -14], # [2, -19, 5]]) torch.diff(input=tensor1, n=4, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=4, dim=-2, prepend=tensor2, append=tensor3) # tensor([[-13, 54, -25], # [6, -49, 19]]) torch.diff(input=tensor1, n=0, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=0, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=0, dim=-1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=0, dim=-2, prepend=tensor2, append=tensor3) # tensor([[4, 9, 1], [3, 0, 7]]) torch.diff(input=tensor1, n=6, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=6, dim=-2, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=7, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=7, dim=-2, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=8, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=8, dim=-2, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=9, dim=0, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=9, dim=-2, prepend=tensor2, append=tensor3) # tensor([], size=(0, 3), dtype=torch.int64) torch.diff(input=tensor1, n=9, dim=1, prepend=tensor2, append=tensor3) torch.diff(input=tensor1, n=9, dim=-1, prepend=tensor2, append=tensor3) # tensor([], size=(2, 0), dtype=torch.int64)
Top comments (0)