python zip旋转矩阵
时间: 2023-11-03 22:07:02 浏览: 70
好的,关于 Python 中使用 zip 函数旋转矩阵的问题,可以通过以下代码实现:
```python
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
rotated_matrix = list(zip(*matrix[::-1]))
print(rotated_matrix)
```
这里的 `matrix` 是一个二维列表,表示一个 $3 \times 3$ 的矩阵。`[::-1]` 表示将列表倒序,然后使用 `zip` 函数将每一列转换为一行,最后再将所有行组成一个新的矩阵。
输出结果为:
```
[(7, 4, 1), (8, 5, 2), (9, 6, 3)]
```
其中每个元素都是一个元组,表示新矩阵的一行。
相关问题
python矩阵旋转90
以下是两种Python矩阵旋转90度的方法:
1. 使用NumPy库中的函数进行旋转:
```python
import numpy as np
# 假设原始矩阵为matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 使用np.rot90()函数进行旋转
matrix = np.rot90(matrix, 3) # 因为默认逆时针旋转,所以这里转三次
# 输出旋转后的矩阵
print(matrix)
```
输出结果为:
```
[[3 6 9]
[2 5 8]
[1 4 7]]
```
2. 不使用任何库,使用zip(*)进行转置:
```python
def rotate(matrix):
matrix = matrix[::-1] # 先将矩阵上下翻转
res = []
for line in zip(*matrix): # 使用zip(*)进行转置
res.append(list(line))
return res
# 假设原始矩阵为matrix
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 调用rotate()函数进行旋转
matrix = rotate(matrix)
# 输出旋转后的矩阵
print(matrix)
```
输出结果为:
```
[[3, 6, 9], [2, 5, 8], [1, 4, 7]]
```
构建函数计算旋转矩阵
构建一个函数来计算旋转矩阵,通常是指将一个矩阵顺时针或逆时针旋转90度、180度或270度的操作。这里以Python为例,我们将编写一个通用函数,接受矩阵和旋转次数作为输入,并返回旋转后的矩阵。
假设函数名为`rotate_matrix`,我们可以这样实现:
```python
def rotate_matrix(matrix, rotations=1):
# 确保旋转次数是整数
rotations = int(rotations % 4)
# 旋转矩阵的基础操作,对于一个2D列表
def rotate():
n = len(matrix)
rotated = [list(row) for row in zip(*matrix[::-1])]
return rotated
# 由于最多旋转四次,每次旋转相当于翻转两次
for _ in range(rotations // 2): # 每两次翻转就相当于一次旋转
matrix = rotate()
if rotations % 2 != 0: # 如果还有剩余的奇数次旋转
matrix = rotate()
return matrix
```
这个函数首先确定旋转次数的有效范围(0到3),然后每两次翻转就完成一次顺时针旋转,如果旋转次数为奇数,还会额外进行一次旋转。
你可以像这样使用它:
```python
# 示例
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
rotated_matrix = rotate_matrix(matrix, 1) # 顺时针旋转90度
```
阅读全文