如果我有这样的矩阵:
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]])
