Numpy矩阵翻转与旋转详解:flip函数与rot90应用

周末不加班
周末不加班
发布时间:2026-10-15| 5人浏览过
原创

本文详解Numpy中矩阵翻转(flip)与旋转(rot90)的实现方法。通过axis参数控制上下或左右翻转,保持形状不变。结合skimage.io读取的图片数据,利用rot90实现90度、180度等角度旋转,适用于图像数据增广场景。

使用numpy.flip(m, axis=None)函数可对矩阵进行翻转操作。

该函数沿指定轴反转数组元素的顺序。

操作后数组形状保持不变,仅元素顺序发生重排。

具体而言,该操作将矩阵m在指定的axis维度上进行切片,并将该维度内的索引顺序完全颠倒。

以下通过具体示例展示操作效果。

首先随机生成一个二维数组用于演示。


import  numpy as np
a=np.random.randint(1,9,size=9).reshape((3,3))

生成的示例数组如下: [[5 8 6] [3 1 7] [8 7 8]]

当设置axis=0时,执行上下翻转。此时将每一行视为整体,行的排列顺序发生颠倒,而每一行内部的元素顺序保持不变。


print(np.flip(a,axis=0))

翻转后的结果如下: [[8 7 8] [3 1 7] [5 8 6]]

当设置axis=1时,执行左右翻转。此时将每一列视为整体,列的排列顺序发生颠倒,而每一列内部的元素顺序保持不变。


print(np.flip(a,axis=1))

翻转后的结果如下: [[6 8 5] [7 1 3] [8 7 8]]

接下来介绍Numpy矩阵的旋转方法。

使用skimage.io读取的图片通常以numpy.darray格式存储。掌握矩阵的旋转与翻转技巧,能够有效实现数据增广(data augmentation)。

可以使用rot90函数来实现矩阵旋转,具体示例如下。


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 <left> anti-clockwise"
mat90 = np.rot90(mat, -1)
print mat90, "# rorate 90 <right> clockwise"
mat180 = np.rot90(mat, 2)
print mat180, "# rorate 180 <left> anti-clockwise"
mat270 = np.rot90(mat, 3)
print mat270, "# rorate 270 <left> anti-clockwise"

如果输入的mat变量代表图片数据,那么旋转后的可视化效果会更加直观。

以上为个人经验总结,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。