如何在 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+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.