如何在 PyTorch 中打乱矩阵的列或行?


PyTorch 中的矩阵是一个二维张量,其元素具有相同的 dtype。我们可以将一行与另一行交换,将一列与另一列交换。要打乱行或列,我们可以像在 Numpy 中一样使用简单的**切片**和**索引**。

  • 如果我们想打乱行,那么我们在行索引中进行切片。

  • 要打乱列,我们在列索引中进行切片。

  • 例如,如果我们想打乱 3×3 矩阵的第 1 行和第 2 行,那么我们只需打乱这些行的索引并进行切片以找到打乱后的矩阵。

让我们看几个例子,以便更好地理解它是如何工作的。

步骤

您可以使用以下步骤来打乱矩阵的行或列。

  • 导入所需的库。在以下所有示例中,所需的 Python 库是**torch**。确保您已安装它。

import torch
  • 定义一个矩阵并打印它。

matrix = torch.tensor([[1., 2., 3.],[4., 5., 6.],[7, 8, 9]])
print("Original Matrix:
", matrix)
  • 指定行和列索引以及打乱后的索引。在以下示例中,我们打乱第 1 行和第 2 行。因此,我们交换了这些行的索引。

# shuffle 1st and second row
r = torch.tensor([1, 0, 2])
c = torch.tensor([0, 1, 2])
  • 打乱矩阵的行或列。

matrix=matrix[r[:, None], c] # shuffles rows
matrix = matrix[r][:,c] # shuffles columns
  • 打印打乱后的矩阵。

print("Shuffled Matrix:
", matrix)

示例 1

在以下示例中,我们打乱第 1 行和第 2 行。

# Import the required library
import torch

# create a matrix
matrix = torch.tensor([[1., 2., 3.],[4., 5., 6.],[7, 8, 9]])

# print matrix
print("Original Matrix:
", matrix) # shuffle 1st and second row r = torch.tensor([1, 0, 2]) c = torch.tensor([0, 1, 2]) matrix=matrix[r[:, None], c] print("Shuffled Matrix:
", matrix)

输出

Original Matrix:
   tensor([[1., 2., 3.],
      [4., 5., 6.],
      [7., 8., 9.]])
Shuffled Matrix:
   tensor([[4., 5., 6.],
      [1., 2., 3.],
      [7., 8., 9.]])

请注意,第 1 行和第 2 行已打乱。

示例 2

在以下示例中,我们打乱第 2 列和第 3 列。

# Import the required library
import torch

# create a matrix
matrix = torch.tensor([[1., 2., 3.],[4., 5., 6.],[7, 8, 9]])

# print matrix
print("Original Matrix:
", matrix) # shuffle 2nd and 3rd columns r = torch.tensor([0, 1, 2]) c = torch.tensor([0, 2, 1]) matrix_col_Shuffled = matrix[r][:,c] print("Shuffled Matrix:
", matrix_col_Shuffled)

输出

Original Matrix:
   tensor([[1., 2., 3.],
      [4., 5., 6.],
      [7., 8., 9.]])
Shuffled Matrix:
   tensor([[1., 3., 2.],
      [4., 6., 5.],
      [7., 9., 8.]])

更新于: 2022年1月20日

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告