Numpy矩阵翻转与旋转详解:flip函数与rot90应用
本文详解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变量代表图片数据,那么旋转后的可视化效果会更加直观。
以上为个人经验总结,希望能给大家一个参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













