python旋转矩阵90°_NumPy矩阵的旋转

本文介绍了如何使用Python的NumPy库进行矩阵的旋转操作,包括使用`np.rot90()`函数以及自定义方法实现矩阵90度、180度、270度的旋转。此外,还探讨了对一般矩阵进行旋转的方法,并解释了矩阵旋转在图像处理和深度学习中的应用。
摘要由CSDN通过智能技术生成

13. NumPy矩阵的旋转

在用Python的数字图像处理、CNN或者深度学习里,对图像的处理:形变(缩放)处理常将图像数据读取到NumPy的array数据里,然后对图像数据进行形变处理。NumPy提供了很多的对array数组的操作:tile、rot90等。本章除了了解rot90的基本使用外,自己也想写点程序实现旋转的功能。

13.1 rot90函数实现矩阵旋转

从NumPy的官方完整查到rot90函数语法格式如下:

rot90(m, k=1, axes=(0, 1)

m是要旋转的数组(矩阵),k是旋转的次数,默认旋转1次,那是顺时针还是逆时针呢?正数表示逆时针,而k为负数时则是对数组进行顺时针方向的旋转。

import numpy as np

mat = np.array([[1,3,5],

[2,4,6],

[7,8,9]

])

print mat, "# orignal"

mat90 = np.rot90(mat, 1)

print mat90, "# rorate 90 anti-clockwise"

mat90 = np.rot90(mat, -1)

print mat90, "# rorate 90 clockwise"

mat180 = np.rot90(mat, 2)

print mat180, "# rorate 180 anti-clockwise"

mat270 = np.rot90(mat, 3)

print mat270, "# rorate 270 anti-clockwise"

执行结果:

[[1 3 5]

[2 4 6]

[7 8 9]] # orignal

[[5 6 9]

[3 4 8]

[1 2 7]] # rorate 90 anti-clockwise

[[7 2 1]

[8 4 3]

[9 6 5]] # rorate 90 clockwise

[[9 8 7]

[6 4 2]

[5 3 1]] # rorate 180 anti-clockwise

[[7 2 1]

[8 4 3]

[9 6 5]] # rorate 270 anti-clockwise

可见逆时针旋转$270^{\ \circ}$等价于顺时针旋转$90^{\ \circ}$。

13.2 Python实现方阵的旋转

下面自己编写旋转功能。根据矩阵理论,

$\bigotimes\ $对方阵$A_{n \times n}$左乘一个负对角线上均是1、其余都是0的方阵(记作:$E^{-1}$)实现方阵$A_{n \times n}$的行的互换。

$\bigotimes\ $对方阵$A_{n \times n}$右乘一个负对角线上均是1、其余都是0的方阵而实现对方阵$A_{n \times n}$的列的互换。

$\bigotimes\ $对方阵$A_{n \times n}$的转置$A_{n\times n}^{T}$左乘一个负对角线上均是1、其余都是0的方阵$A_{n \times n}$实现向左(逆时针)90$^{\ \circ}$旋转。

$\bigotimes\ $对方阵$A_{n \times n}$的转置$A_{n\times n}^{T}$右乘一个负对角线上均是1、其余都是0的方阵$A_{n \times n}$实现向右(顺时针)90$^{\ \circ}$旋转。

$\bigotimes\ $对方阵$A_{n \times n}$左右各乘一个负对角线上均是1、其余都是0的方阵而实现对方阵$A_{n \times n}$的180$^{\ \circ}$旋转。

显然要想自己实现对方阵的旋转&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值