Open In App

How to Shuffle Columns or Rows of Matrix in PyTorch?

In this article, we will see how to shuffle columns and rows of a matrix in PyTorch.

Column Shuffling:

Row and Column index starts with 0 so by specifying column indices in the order, we will shuffle columns. Here we will change the column positions.



Syntax: t1[torch.tensor([row_indices])][:,torch.tensor([column_indices])]

where,



  • row_indices and column_indices are the index positions in which they are shuffled based on the positions.
  • t1 represents tensor which of 2 dimensional.

Example 1:

In this example, we are creating a tensor named t1, which is of 2 dimensions of 3 rows, and 3 columns are created. After that, we are shuffling columns in such a way that we are moving column elements from the first position to the third position and the third position to the first position.




# importing torch
import torch
  
# create tensor
t1 = torch.tensor([[1, 2, 3],
                   [5, 6, 7],
                   [9, 10, 11]])
  
# printing the tensor
print(t1)
  
print()
  
# shuffle columns - first position 
# to third position and
# third position to first position
print(t1[torch.tensor([0, 1, 2])][:, torch.tensor([2, 1, 0])])

Output:

tensor([[ 1,  2,  3],
        [ 5,  6,  7],
        [ 9, 10, 11]])

tensor([[ 3,  2,  1],
        [ 7,  6,  5],
        [11, 10,  9]])

Example 2:

In this example, we are creating a tensor named t1, which is of 2 dimensions of 3 rows and 3 columns. After that we are shuffling columns in such a way that second position elements are moved to the third position, third position elements are moved to a first position and first position elements are moved to the second position.




# importing torch
import torch
  
# create tensor
t1 = torch.tensor([[1, 2, 3],
                   [5, 6, 7],
                   [9, 10, 11]])
  
# printing the tensor
print(t1)
  
print()
  
# shuffle columns - second  position
# to third position ,
# third position to first position
# and first position to second position
print(t1[torch.tensor([0, 1, 2])][:, torch.tensor([1, 2, 0])])

Output:

tensor([[ 1,  2,  3],
        [ 5,  6,  7],
        [ 9, 10, 11]])

tensor([[ 2,  3,  1],
        [ 6,  7,  5],
        [10, 11,  9]])

Row Shuffling:

Row and Column index starts with 0 so by specifying column indices in the order, we will shuffle columns. Here we will change the row positions.

Syntax:t1[torch.tensor([row_indices])][:,torch.tensor([column_indices])]

where,

  • row_indices and column_indices are the index positions in which they are shuffled based on the positions.
  • t1 represents tensor which of 2 dimensional.

Example 1:

In this example, we are creating a tensor named t1, which is of 2 dimensions of 3 rows and 3 columns. After that, we are shuffling rows from the first position to the third position and from the third position to the first position.




# importing torch
import torch
  
# create tensor
t1 = torch.tensor([[1, 2, 3],
                   [5, 6, 7],
                   [9, 10, 11]])
  
# printing the tensor
print(t1)
  
print()
  
# shuffle rows   - first position to third position and
# third position to first position
print(t1[torch.tensor([2, 1, 0])][:, torch.tensor([0, 1, 2])])

Output:

tensor([[ 1,  2,  3],
        [ 5,  6,  7],
        [ 9, 10, 11]])

tensor([[ 9, 10, 11],
        [ 5,  6,  7],
        [ 1,  2,  3]])

Example 2:

In this example, we are creating a tensor named t1, which is of 2 dimensions of 3 rows and 3 columns. After that we are shuffling the rows in such a way that second position elements are moved to the third position, third position elements are moved to the first position and first position elements are moved to the second position.




# importing torch
import torch
  
# create tensor
t1 = torch.tensor([[1, 2, 3],
                   [5, 6, 7],
                   [9, 10, 11]])
  
# printing the tensor
print(t1)
  
print()
  
# shuffle rows   - second  position to third position ,
# third position to first position and first position
# to second position
print(t1[torch.tensor([1, 2, 0])][:, torch.tensor([0, 1, 2])])

Output:

tensor([[ 1,  2,  3],
        [ 5,  6,  7],
        [ 9, 10, 11]])

tensor([[ 5,  6,  7],
        [ 9, 10, 11],
        [ 1,  2,  3]])

Article Tags :