您要做的是对矩阵进行转置。转置矩阵意味着将所有列更改为行(或等效地,将行更改为列)。用 numpy 很容易实现:
>>> import numpy as np
>>> a = np.random.randint(10, size=(5, 5))
>>> a
array([[3, 3, 4, 9, 8],
[9, 0, 0, 5, 6],
[4, 1, 2, 4, 5],
[2, 9, 0, 8, 0],
[9, 9, 2, 3, 0]])
>>> a.T
array([[3, 9, 4, 2, 9],
[3, 0, 1, 9, 9],
[4, 0, 2, 0, 2],
[9, 5, 4, 8, 3],
[8, 6, 5, 0, 0]])
>>> np.transpose(a)
array([[3, 9, 4, 2, 9],
[3, 0, 1, 9, 9],
[4, 0, 2, 0, 2],
[9, 5, 4, 8, 3],
[8, 6, 5, 0, 0]])
以手动方式进行,例如
>>> import numpy as np
>>> matrix = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
])
>>> transposed_matrix = np.empty((3, 3))
>>> for i in range(3):
... transposed_matrix[:, i] = matrix[i, :]
>>> transposed_matrix
array([[1. 4. 7.]
[2. 5. 8.]
[3. 6. 9.]])
或完全没有 numpy(可能有很多方法可以做到这一点,而且可能比我做的更聪明!=)):
>>> matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
>>> transposed_matrix = []
>>> for i in range(3):
... tmp = []
... for j in range(3):
... tmp.append(matrix[j][i])
... transposed_matrix.append(tmp)
>>> transposed_matrix
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]