numpy 数组的旋转、上下翻转、镜像
文章目录
- 一、常见的数组翻转等方法
- np.transpose(),numpy.array.T
- np.rollaxis(),np.swapaxes() 数组滚动与维度交换
- 二、数组旋转(自定义psf2otf 卷积核用的)
- numpy 矩阵左右翻转/上下翻转
一、常见的数组翻转等方法
函数 | 描述 |
---|---|
transpose | 对换数组的维度 |
ndarray.T | 转置 |
rollaxis | 向后滚动指定的轴 |
swapaxes | 对换数组的两个轴 |
np.transpose(),numpy.array.T
import numpy as nparr0 = np.arange(12).reshape(3, 4)
arr2 = np.transpose(arr0)
arr3 = arr0.Tprint('arr0 原数组:\n', arr0,'\n')
print('arr2 维度对换之后:\n', arr2,'\n')
print('arr3 数组转置:\n', arr3,'\n')
'''
arr0 原数组:[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]] arr2 维度对换之后:(显然与转置效果arr3相同)[[ 0 4 8][ 1 5 9][ 2 6 10][ 3 7 11]] arr3 数组转置:[[ 0 4 8][ 1 5 9][ 2 6 10][ 3 7 11]] '''
np.rollaxis(),np.swapaxes() 数组滚动与维度交换
arr1 = np.arange(18).reshape(2,3,3)
arr4_0 = np.rollaxis(arr1,0,2)
arr4_1 = np.rollaxis(arr1,2,1)print('arr1 原数组:\n', arr1,'\n')
print('arr4_0 向后滚动特定的轴到一个特定位置:\n', arr4_0,'\n')
print('arr4_1 向后滚动特定的轴到一个特定位置:\n', arr4_1,'\n')arr5_0 = np.swapaxes(arr1, 0, 1)
arr5_1 = np.swapaxes(arr1, 1, 2)
print('arr5_0交换数组的两个轴:\n', arr5_0,'\n')
print('arr5_1交换数组的两个轴:\n', arr5_1,'\n')
'''
arr1 原数组:[[[ 0 1 2][ 3 4 5][ 6 7 8]][[ 9 10 11][12 13 14][15 16 17]]] arr4_0 向后滚动特定的轴到一个特定位置:(与arr5_0 效果相同)[[[ 0 1 2][ 9 10 11]][[ 3 4 5][12 13 14]][[ 6 7 8][15 16 17]]] arr4_1 向后滚动特定的轴到一个特定位置:(与arr5_1 效果相同)[[[ 0 3 6][ 1 4 7][ 2 5 8]][[ 9 12 15][10 13 16][11 14 17]]] arr5_0交换数组的两个轴:[[[ 0 1 2][ 9 10 11]][[ 3 4 5][12 13 14]][[ 6 7 8][15 16 17]]] arr5_1交换数组的两个轴:[[[ 0 3 6][ 1 4 7][ 2 5 8]][[ 9 12 15][10 13 16][11 14 17]]]
'''
二、数组旋转(自定义psf2otf 卷积核用的)
import numpy as npdef flip180(arr):new_arr = arr.reshape(arr.size)new_arr = new_arr[::-1]new_arr = new_arr.reshape(arr.shape)return new_arrdef flip90_left(arr):new_arr = np.transpose(arr)new_arr = new_arr[::-1]return new_arrdef flip90_right(arr):new_arr = arr.reshape(arr.size)new_arr = new_arr[::-1]new_arr = new_arr.reshape(arr.shape)new_arr = np.transpose(new_arr)[::-1]return new_arrarr0 = np.array([[1,2,3],[4,5,6],[7,8,9]])flip_180 = flip180(arr0)
left_90 = flip90_left(arr0)
right_90 = flip90_right(arr0)print('===== flip_180 ====\n',flip_180,'\n')
print('===== left_90 =====\n',left_90,'\n')
print('===== right_90 =====\n',right_90,'\n')
'''
===== flip_180 ====[[9 8 7][6 5 4][3 2 1]] ===== left_90 =====[[3 6 9][2 5 8][1 4 7]] ===== right_90 =====[[7 4 1][8 5 2][9 6 3]]
'''
numpy 矩阵左右翻转/上下翻转
flip() (in module numpy)
fliplr() (in module numpy)
flipud() (in module numpy)
- flip:
-
flip(m, 0) is equivalent to flipud(m).
flip(m, 1) is equivalent to fliplr(m).
flip(m, n) corresponds to m[…,::-1,…] with ::-1 at position n.
flip(m) corresponds to m[::-1,::-1,…,::-1] with ::-1 at all positions.
flip(m, (0, 1)) corresponds to m[::-1,::-1,…] with ::-1 at position 0 and position 1.
>>> A = np.array([[[0, 1],[2, 3]],[[4, 5],[6, 7]]])>>> flip(A, 0)
array([[[4, 5],[6, 7]],[[0, 1],[2, 3]]])>>> flip(A, 1)
array([[[2, 3],[0, 1]],[[6, 7],[4, 5]]])>>> np.flip(A)
array([[[7, 6],[5, 4]],[[3, 2],[1, 0]]])>>> np.flip(A, (0, 2))
array([[[5, 4],[7, 6]],[[1, 0],[3, 2]]])>>> A = np.random.randn(3,4,5)
>>> np.all(flip(A,2) == A[:,:,::-1,...])
True
flipud: (==flip(m, 1) )
>>> A = np.diag([1.0, 2, 3])
>>> A
array([[ 1., 0., 0.],[ 0., 2., 0.],[ 0., 0., 3.]])>>> np.flipud(A)
array([[ 0., 0., 3.],[ 0., 2., 0.],[ 1., 0., 0.]])>>> A = np.random.randn(2,3,5)
>>> np.all(np.flipud(A) == A[::-1,...])
True>>> np.flipud([1,2])
array([2, 1])
fliplr: (==flip(m, 0))
>>> A = np.diag([1.,2.,3.])
>>> A
array([[ 1., 0., 0.],[ 0., 2., 0.],[ 0., 0., 3.]])>>> np.fliplr(A)
array([[ 0., 0., 1.],[ 0., 2., 0.],[ 3., 0., 0.]])>>> A = np.random.randn(2,3,5)
>>> np.all(np.fliplr(A) == A[:,::-1,...])
True
特别鸣谢:
https://www.cnblogs.com/xiaoniu-666/p/11123560.html
https://blog.csdn.net/kane7csdn/article/details/83928848
numpy 数组的旋转、上下翻转、镜像相关推荐
- python numpy矩阵的旋转, 转置, 正对角线镜像, 副对角线镜像, 行交换, 列交换操作 rot90()
引用文章: NumPy矩阵的旋转 http://liao.cpython.org/numpy13/
- 深度学习数据增强方法,利用仿射变换实现图像进行各种操作如平移、缩放、旋转、翻转
导读 在深度学习的数据增强中,我们经常需要对图像进行各种增强操作如平移.缩放.旋转.翻转等,这些其实都是图像的仿射变换.通过本篇文章,你能够知道它们的实现原理以及如何应用它们.本文讲述如何通过仿射变换 ...
- Numpy 数组操作
https://docs.scipy.org/doc/numpy/reference/routines.array-manipulation.html #基础的操作 方法 描述 copyto(dst, ...
- matlab 图像上下翻,Matlab图像九宫格基本操作(翻转,镜像等)+位图操作
Matlab图像九宫格基本操作(翻转,镜像等)+位图操作 Matlab图像九宫格基本操作(翻转,镜像等)+位图操作 这次blog提到的操作对于matlab来说都很基础,而且对于有编程和计算机基础的人来 ...
- Numpy数组图像基本操作方法,及截取ROI、增加行与列
Numpy数组截取ROI,增加列.行 1)图片基本操作:读写.显示.缩放.旋转 2)截取ROI,为图片增加行.列 参考 图片在Numpy数组中使用ndarry表示的. 比如分辨率: 400 * 500 ...
- numpy数组切片:一维/二维/数组
文章目录 numpy数组切片操作 一维数组(冒号:) 1.一个参数:a[i] 2.两个参数:b=a[i:j] 3.三个参数:格式b = a[i:j:s] 4.例子 二维数组(逗号,) 取元素 X[n0 ...
- 34.35.热图(heatmap)、创建带注释的热图、使用辅助函数的代码样式、图像显示、图像插值、将图像数据导入Numpy数组、将numpy数组绘制为图像
34.热图(heatmap) 34.1.创建带注释的热图 34.2.使用辅助函数的代码样式 35.图像显示 35.1.图像插值 35.2.将图像数据导入Numpy数组 35.3.将numpy数组绘制为 ...
- python 创建空的numpy数组_Numpy入门教程:01. 数组的创建与属性
背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 -- Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: ...
- python numpy数组切片_python中numpy数组切片实验解释
print(a[0::2]).a[::2].[:,2].[1:,-1:].a[::-1].[ : n].[m : ].[-1].[:-1].[1:]等的含义 文章目录 一维数组(冒号:) 1.一个参数 ...
最新文章
- 转 互联网推送服务原理:长连接+心跳机制(MQTT协议)
- 【性能优化】 之 HINTS 相关作业
- Linux学习笔记——gzip命令
- 完美解决Mac电脑睡眠之后苹果电脑没有声音的方法
- python-索引1909
- windows中的定时任务--任务计划程序
- ethers.js-5-Utilities
- 关于X-UA-Compatible
- 移动APP开发的五个重要步骤
- C#实现CAD数据转shape或mdb
- 华为交换机安全端口实验
- C#反编译软件查看dll文件源码
- 燃烧远征怀旧服务器人数小程序,魔兽怀旧服一直更新下去,最终会开到哪个版本?...
- CODOSYS之结构化文本(ST)—— 初级篇(二)简介与基本概念
- 无线网卡连接internet,有线网卡向另一台电脑分享网络(笔记本当有线路由器)...
- 工作记录 io流写入linux文件
- antv图例出现分页_AntV - G2
- 14位科技圈大V评说戴尔科技峰会
- 【LeetCode 1240】 Tiling a Rectangle with the Fewest Squares
- win7 查看网络计算机和设备,WIN7 网络发现已关闭 网络计算机和设备不可见
热门文章
- 初次使用Pikachu漏洞平台进行测试实验
- Dynamics 365 新建组织时一直提示识别不到Reporting Extensions
- 对话框不响应WM_KEYDOWN消息,可以通过重载BOOL PreTranslateMessage(MSG * pMsg)来实现
- 2019成长复盘2020成长规划
- 浅谈Oracle RAC --集群管理软件GI
- Kubernetes priviledge and capabilities
- docker--privileged
- 百度云不限速for mac
- 查找网站的IP地址的两种方法
- html图片缩放全部显示不全,100% width CSS 在缩小/放大窗口时候内容被截断或显示不全...