Cho ma trận
matrix = [[2, None],
[2, None]]
Tôi cần tính toán chuyển đổi của điều này. Tôi đã làm như sau:
def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
Nhưng điều này cho tôi kết quả sai:
[[2, None],
[None, None]]
trong khi nó nên
[[2, 2],
[None, None]]
Ai đó có thể cho tôi biết nơi tôi đã sai với mã của mình không?
Hỏi ngày 5 tháng 12 năm 2015 lúc 12:12Dec 5, 2015 at 12:12
1
Bạn tham khảo cùng một ma trận, hãy thử khởi tạo một cái mới:
def transpose[matrix]:
# Makes a copy of the matrix
result = [[None]* len[x] for x in matrix]
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[i][j] = matrix[j][i]
return result
Bạn cũng có thể làm điều đó cho một ma trận chung bằng cách sử dụng danh sách hiểu
def transpose[matrix]:
return [[matrix[i][j] for i in range[len[matrix[j]]]] for j in range[len[matrix]]]
Đã trả lời ngày 5 tháng 12 năm 2015 lúc 12:28Dec 5, 2015 at 12:28
NetwavenetwaveNetwave
37.8K6 Huy hiệu vàng45 Huy hiệu bạc81 Huy hiệu đồng6 gold badges45 silver badges81 bronze badges
Vấn đề là biến
def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
4 đề cập đến def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
5, nghĩa là bạn không tạo một bản sao, vì vậy trong vòng lặp, bạn thực sự cũng thay đổi def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
5. Bạn có thể giải quyết điều này bằng cách tạo một bản sao của def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
5 kết quả với def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
8:result = [list[x] for x in matrix]
Xem câu hỏi: Làm thế nào để nhân bản hoặc sao chép một danh sách?
Lưu ý rằng một cách dễ dàng hơn là sử dụng
def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
9:import numpy as np
matrix = np.matrix[[[2, None],[2, None]]]
Sau đó sử dụng
[[2, None],
[None, None]]
0 để chuyển đổi:matrix[[[2, 2],
[None, None]], dtype=object]
Đã trả lời ngày 5 tháng 12 năm 2015 lúc 12:27Dec 5, 2015 at 12:27
Agoldagoldagold
5.9809 Huy hiệu vàng41 Huy hiệu bạc54 Huy hiệu đồng9 gold badges41 silver badges54 bronze badges
# We can use the below method also:
matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
mat_trans = []
trans = []
trans1 = []
trans2 = []
trans3 = []
for row in matrix:
for i in range[4]:
if i == 0:
trans.append[row[i]]
if i == 1:
trans1.append[row[i]]
if i == 2:
trans2.append[row[i]]
if i == 3:
trans3.append[row[i]]
mat_trans.append[trans]
mat_trans.append[trans1]
mat_trans.append[trans2]
mat_trans.append[trans3]
trans = []
print[mat_trans]
Đã trả lời ngày 26 tháng 12 năm 2019 lúc 5:10Dec 26, 2019 at 5:10
Giả sử rằng ma trận là hình chữ nhật [nghĩa là cùng kích thước danh sách trong tất cả các mảng một chiều], người ta có thể chỉ cần viết một chuyển đổi như sau.
def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
0Lưu ý: Đây không phải là triển khai hiệu quả nhất.
Đã trả lời ngày 6 tháng 5 năm 2018 lúc 3:42May 6, 2018 at 3:42
Trong ví dụ này, bạn sẽ học cách chuyển một ma trận [được tạo bằng cách sử dụng danh sách lồng nhau].
Để hiểu ví dụ này, bạn nên có kiến thức về các chủ đề lập trình Python sau:
- Python cho vòng lặp
- Danh sách Python
Trong Python, chúng ta có thể triển khai ma trận dưới dạng danh sách lồng nhau [danh sách bên trong danh sách]. Chúng ta có thể coi từng phần tử như một hàng của ma trận.
Ví dụ
[[2, None],
[None, None]]
1 sẽ đại diện cho ma trận 3x2. Hàng đầu tiên có thể được chọn là [[2, None],
[None, None]]
2. Và, phần tử trong cột đầu tiên có thể được chọn là [[2, None],
[None, None]]
3.Chuyển đổi của một ma trận là sự trao đổi của các hàng và cột. Nó được ký hiệu là x '. Phần tử ở cột Ith và cột thứ j trong x sẽ được đặt ở hàng thứ j và cột ith trong x '. Vì vậy, nếu x là ma trận 3x2, x 'sẽ là ma trận 2x3.
Dưới đây là một vài cách để thực hiện điều này trong Python.
Ma trận chuyển vị bằng cách sử dụng vòng lặp lồng nhau
def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
1Đầu ra
def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
2Trong chương trình này, chúng tôi đã sử dụng các vòng lặp
[[2, None],
[None, None]]
4 lồng nhau để lặp qua mỗi hàng và mỗi cột. Tại mỗi điểm, chúng ta đặt phần tử x [i] [j] vào kết quả [j] [i].Ma trận chuyển vị bằng cách sử dụng danh sách lồng nhau
def transpose[matrix]:
# Makes a copy of the matrix
result = matrix
# Computes tranpose
for i in range[2]:
for j in range[2]:
result[j][i] = matrix[i][j]
return result
3Đầu ra của chương trình này giống như trên. Chúng tôi đã sử dụng sự hiểu biết danh sách lồng nhau để lặp qua từng phần tử trong ma trận.