文章目录

  • 一、常见的数组翻转等方法
    • 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 数组的旋转、上下翻转、镜像相关推荐

  1. python numpy矩阵的旋转, 转置, 正对角线镜像, 副对角线镜像, 行交换, 列交换操作 rot90()

    引用文章: NumPy矩阵的旋转 http://liao.cpython.org/numpy13/

  2. 深度学习数据增强方法,利用仿射变换实现图像进行各种操作如平移、缩放、旋转、翻转

    导读 在深度学习的数据增强中,我们经常需要对图像进行各种增强操作如平移.缩放.旋转.翻转等,这些其实都是图像的仿射变换.通过本篇文章,你能够知道它们的实现原理以及如何应用它们.本文讲述如何通过仿射变换 ...

  3. Numpy 数组操作

    https://docs.scipy.org/doc/numpy/reference/routines.array-manipulation.html #基础的操作 方法 描述 copyto(dst, ...

  4. matlab 图像上下翻,Matlab图像九宫格基本操作(翻转,镜像等)+位图操作

    Matlab图像九宫格基本操作(翻转,镜像等)+位图操作 Matlab图像九宫格基本操作(翻转,镜像等)+位图操作 这次blog提到的操作对于matlab来说都很基础,而且对于有编程和计算机基础的人来 ...

  5. Numpy数组图像基本操作方法,及截取ROI、增加行与列

    Numpy数组截取ROI,增加列.行 1)图片基本操作:读写.显示.缩放.旋转 2)截取ROI,为图片增加行.列 参考 图片在Numpy数组中使用ndarry表示的. 比如分辨率: 400 * 500 ...

  6. numpy数组切片:一维/二维/数组

    文章目录 numpy数组切片操作 一维数组(冒号:) 1.一个参数:a[i] 2.两个参数:b=a[i:j] 3.三个参数:格式b = a[i:j:s] 4.例子 二维数组(逗号,) 取元素 X[n0 ...

  7. 34.35.热图(heatmap)、创建带注释的热图、使用辅助函数的代码样式、图像显示、图像插值、将图像数据导入Numpy数组、将numpy数组绘制为图像

    34.热图(heatmap) 34.1.创建带注释的热图 34.2.使用辅助函数的代码样式 35.图像显示 35.1.图像插值 35.2.将图像数据导入Numpy数组 35.3.将numpy数组绘制为 ...

  8. python 创建空的numpy数组_Numpy入门教程:01. 数组的创建与属性

    背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 -- Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: ...

  9. python numpy数组切片_python中numpy数组切片实验解释

    print(a[0::2]).a[::2].[:,2].[1:,-1:].a[::-1].[ : n].[m : ].[-1].[:-1].[1:]等的含义 文章目录 一维数组(冒号:) 1.一个参数 ...

最新文章

  1. 转 互联网推送服务原理:长连接+心跳机制(MQTT协议)
  2. 【性能优化】 之 HINTS 相关作业
  3. Linux学习笔记——gzip命令
  4. 完美解决Mac电脑睡眠之后苹果电脑没有声音的方法
  5. python-索引1909
  6. windows中的定时任务--任务计划程序
  7. ethers.js-5-Utilities
  8. 关于X-UA-Compatible
  9. 移动APP开发的五个重要步骤
  10. C#实现CAD数据转shape或mdb
  11. 华为交换机安全端口实验
  12. C#反编译软件查看dll文件源码
  13. 燃烧远征怀旧服务器人数小程序,魔兽怀旧服一直更新下去,最终会开到哪个版本?...
  14. CODOSYS之结构化文本(ST)—— 初级篇(二)简介与基本概念
  15. 无线网卡连接internet,有线网卡向另一台电脑分享网络(笔记本当有线路由器)...
  16. 工作记录 io流写入linux文件
  17. antv图例出现分页_AntV - G2
  18. 14位科技圈大V评说戴尔科技峰会
  19. 【LeetCode 1240】 Tiling a Rectangle with the Fewest Squares
  20. win7 查看网络计算机和设备,WIN7 网络发现已关闭 网络计算机和设备不可见

热门文章

  1. 初次使用Pikachu漏洞平台进行测试实验
  2. Dynamics 365 新建组织时一直提示识别不到Reporting Extensions
  3. 对话框不响应WM_KEYDOWN消息,可以通过重载BOOL PreTranslateMessage(MSG * pMsg)来实现
  4. 2019成长复盘2020成长规划
  5. 浅谈Oracle RAC --集群管理软件GI
  6. Kubernetes priviledge and capabilities
  7. docker--privileged
  8. 百度云不限速for mac
  9. 查找网站的IP地址的两种方法
  10. html图片缩放全部显示不全,100% width CSS 在缩小/放大窗口时候内容被截断或显示不全...