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 相关文章推荐
Python3.0与2.X版本的区别实例分析
Aug 25 Python
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
python通过Windows下远程控制Linux系统
Jun 20 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
Python API 自动化实战详解(纯代码)
Jun 11 Python
django 快速启动数据库客户端程序的方法示例
Aug 16 Python
基于python中__add__函数的用法
Nov 25 Python
Tensorflow实现在训练好的模型上进行测试
Jan 20 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
python 对象真假值的实例(哪些视为False)
Dec 11 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 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
redis 队列操作的例子(php)
2012/04/12 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
自己的js工具 Event封装
2009/08/21 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
在Django框架中编写Context处理器的方法
2015/07/20 Python
python正则表达式之作业计算器
2016/03/18 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
Html5页面二次分享的实现
2018/07/30 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
德国网上宠物店:Zoobio
2018/05/23 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
2014年大学生就业规划书
2014/04/04 职场文书
农村老人去世追悼词
2015/06/23 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
php png失真的原因及解决办法
2021/10/24 PHP