Dùng Indexing (chỉ mục) để truy cập một phần tử đơn lẻ, Slicing (cắt lát) để truy cập dãy phần tử. Dùng toán tử gán để sửa đổi giá trị.
Các bước
Nhập torch.
Định nghĩa tensor.
Truy cập giá trị bằng indexing hoặc slicing.
Sửa đổi bằng toán tử gán.
In tensor để kiểm tra.
Ví dụ 1: Truy cập và sửa một phần tử
import torch
# Tensor 3x2
a = torch.Tensor([[3, 5], [1, 2], [5, 7]])
print("a:\n", a)
# Truy cập phần tử hàng 2, cột 1 (index [1,0])
b = a[1, 0]
print("a[1,0]:\n", b)
# Cách khác
c = a[1][0]
print("a[1][0]:\n", c)
# Sửa giá trị 1 thành 9
a[1, 0] = 9
print("Tensor 'a' sau sửa a[1,0]:")
print("a:\n", a)
Kết quả
a: tensor([[3., 5.], [1., 2.], [5., 7.]]) a[1,0]: tensor(1.) a[1][0]: tensor(1.) tensor 'a' after modifying value at a[1,0]: a: tensor([[3., 5.], [9., 2.], [5., 7.]])
Ví dụ 2: Slicing và sửa nhiều phần tử
import torch
a = torch.Tensor([[3, 5], [1, 2], [5, 7]])
print("a:\n", a)
# Truy cập toàn bộ hàng 2
b = a[1]
print("a[1]:\n", a[1])
# Hàng 1 và 2
b = a[0:2]
print("a[0:2]:\n", a[0:2])
# Toàn bộ cột 2
c = a[:, 1]
print("a[:,1]:\n", a[:, 1])
# Hai hàng đầu, cột 2
print("a[0:2, 1]:\n", a[0:2, 1])
# Sửa hàng 2
a[1] = torch.Tensor([9, 9])
print("Sau sửa a[1]:\n", a)
# Sửa cột 2 của hai hàng đầu
a[0:2, 1] = torch.Tensor([4, 4])
print("Sau sửa a[0:2, 1]:\n", a)
Kết quả
a: tensor([[3., 5.], [1., 2.], [5., 7.]]) a[1]: tensor([1., 2.]) a[0:2]: tensor([[3., 5.], [1., 2.]]) a[:,1]: tensor([5., 2., 7.]) a[0:2, 1]: tensor([5., 2.]) After modifying a[1]: tensor([[3., 5.], [9., 9.], [5., 7.]]) After modifying a[0:2, 1]: tensor([[3., 4.], [9., 4.], [5., 7.]])