Chuyển vị ma trận nghĩa là chúng ta đang biến cột của nó thành hàng. Hãy hiểu qua ví dụ nó trông như thế nào sau khi chuyển vị.
Giả sử bạn có ma trận gốc như sau:
x = [[1,2],[3,4],[5,6]]
Trong ma trận "x" trên, chúng ta có hai cột, chứa 1, 3, 5 và 2, 4, 6.
Vì vậy khi chúng ta chuyển vị ma trận "x" trên, cột trở thành hàng. Vì vậy phiên bản chuyển vị của ma trận trên sẽ trông như:
x1 = [[1, 3, 5],[2, 4, 6]]
Vì vậy chúng ta có ma trận khác 'x1', được tổ chức khác với các giá trị khác nhau ở vị trí khác nhau.
Dưới đây là một vài cách thực hiện điều này trong Python:
Phương pháp 1 - Chuyển vị ma trận dùng Vòng lặp lồng nhau (Nested Loop):
# Ma trận gốc
x = [[1,2],[3,4],[5,6]]
result = [[0, 0, 0], [0, 0, 0]]
# Duyệt qua các hàng
for i in range(len(x)):
# Duyệt qua các cột
for j in range(len(x[0])):
result[j][i] = x[i][j]
for r in result:
print(r)
Kết quả
[1, 3, 5]
[2, 4, 6]
Phương pháp 2 - Chuyển vị ma trận dùng List Comprehension lồng nhau.
# Ma trận gốc
x = [[1,2],[3,4],[5,6]]
result = [[x[j][i] for j in range(len(x))] for i in range(len(x[0]))]
for r in result:
print(r)
Kết quả
[1, 3, 5]
[2, 4, 6]
List comprehension cho phép chúng ta viết code ngắn gọn và nên được dùng thường xuyên trong Python.
Phương pháp 3 - Chuyển vị ma trận dùng Zip
# Ma trận gốc
x = [[1,2],[3,4],[5,6]]
result = map(list, zip(*x))
for r in result:
print(r)
Kết quả
[1, 3, 5]
[2, 4, 6]
Phương pháp 4 - Chuyển vị ma trận dùng thư viện Numpy. Numpy là gói xử lý mảng được xây dựng để thao tác hiệu quả mảng đa chiều lớn.
import numpy
# Ma trận gốc
x = [[1,2],[3,4],[5,6]]
print(numpy.transpose(x))
Kết quả
[[1 3 5]
[2 4 6]]