python实现回旋矩阵方式(旋转矩阵)


Posted in Python onDecember 04, 2019

我们知道Python中是没有数组 这种数据结构的,所以要想实现回旋矩阵,需要先导入一个numpy包, 它是一个由多维数组对象和用于处理数组的例程集合组成的python扩充程序库,可以用来做数组算数和逻辑运算

思路:

首先创建一个n*m全为零的矩阵,然后按照旋转规律依次替换里面的值

最外层的循环代表替换一圈数据,这一圈数据在数组中的形状是一个矩形,我们分析可以知道,最后一轮循环有两种情况:

1、替换一圈(矩形)数据

2、替换一个数据

如果是第一种情况,我们让循环正常运行就可以了,但是如果是第二种,就需要加一个if语句进行判断。因为最后一轮大循环只需要替换一个数据,那么我们只需要让它走完第一个小循环最后一个元素必然被替换,所以只需要在第一个小循环后判断一下替换的最后一个元素是否等于理论上最后一个元素的值即可

import numpy as np
def rotary_matrix(n,m):
 array=np.zeros((n,m))
 #起始点
 x=y=0
 ret=array[x][y]=1
 #设置一个变量i用来在循环中判断是否需要旋转矩阵
 i = 0
 while ret < n*m:
  #从上边一行开始由左到右添加元素
  while y<m-1-i:
   y+=1
   ret+=1
   array[x][y]=ret
   
  #若ret等于最后一个元素的值,则表示所有元素添加完毕,这时候可以退出循环
  if ret == n * m:
   break
   
  # 从右边一列开始由上到下添加元素
  while x<n-1-i:
   x+=1
   ret+=1
   array[x][y] = ret
  # 从下边一行开始由右到左添加元素
  while y>0+i:
   y-=1
   ret+=1
   array[x][y]=ret
  # 从左边一列开始由下到上添加元素
  while x>0+1+i:
   x-=1
   ret+=1
   array[x][y] = ret
   
  i+=1
 print(array)

以上这篇python实现回旋矩阵方式(旋转矩阵)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
Python选课系统开发程序
Sep 02 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
May 24 Python
numpy中矩阵合并的实例
Jun 15 Python
python实现二维插值的三维显示
Dec 17 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 Python
windows下numpy下载与安装图文教程
Apr 02 Python
Python queue队列原理与应用案例分析
Sep 27 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
在Django下创建项目以及设置settings.py教程
Dec 03 #Python
Django自带的加密算法及加密模块详解
Dec 03 #Python
python Opencv计算图像相似度过程解析
Dec 03 #Python
django 中使用DateTime常用的时间查询方式
Dec 03 #Python
在django中自定义字段Field详解
Dec 03 #Python
python 实现单通道转3通道
Dec 03 #Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 #Python
You might like
Laravel模型事件的实现原理详解
2018/03/14 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
jQuery在vs2008及js文件中的无智能提示的解决方法
2010/12/30 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
微信小程序的授权实现过程解析
2019/08/02 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python简单进程锁代码实例
2015/04/27 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
pymysql 开启调试模式的实现
2019/09/24 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
Python如何telnet到网络设备
2021/02/18 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
广州一家公司的.NET面试题
2016/06/11 面试题
自我推荐书
2013/12/04 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
高二语文教学反思
2016/02/16 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏