Skip to main content
 首页 » 编程设计

Python:如何转置矩阵的一部分

2025年05月04日31lexus

如果我有这样的矩阵:

matrix = [[1, 2, 3, 4],  
          [5, 6, 7, 8],  
          [9, 10, 11, 12], 
          [13, 14, 15, 16]] 

我怎样才能得到这个:

matrix = [[1, 2, 3, 4],  
          [5, 6, 10, 14],  
          [9, 7, 11, 15], 
          [13, 8, 12, 16]] 

也就是说,我如何排除第一行和第一列以及 转置其余部分?

我试过了,它保持矩阵不变:

for i in range(1, 4): 
    for j in range(1, 4): 
        temp = copy.deepcopy(matrix[i][j]) 
        matrix[i][j] = matrix[j][i] 
        matrix[j][i] = temp 

当我尝试时:

new_matrix = list(matrix) 
for i in range(1, 4): 
    for j in range(1, 4): 
        matrix[i][j] = new_matrix[j][i] 
        matrix[j][i] = new_matrix[i][j] 

我明白了:

[[1, 2, 3, 4],  
[5, 6, 10, 14],  
[9, 10, 11, 15],  
[13, 14, 15, 16]] 

我想将它转置到主对角线和次对角线上。

请您参考如下方法:

学习 numpy,即使是为了这个简单的任务也是值得的。

import numpy as np 
 
m=np.array(range(1,17)).reshape(4,4)     
m[1:,1:]=m[1:,1:].transpose()                                                                                      
 
array([[ 1,  2,  3,  4], 
       [ 5,  6, 10, 14], 
       [ 9,  7, 11, 15], 
       [13,  8, 12, 16]])