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中使用Queue和Condition进行线程同步的方法
Jan 19 Python
利用Python如何生成随机密码
Apr 20 Python
django批量导入xml数据
Oct 16 Python
Python实现的凯撒密码算法示例
Apr 12 Python
PHP实现发送和接收JSON请求
Jun 07 Python
python flask安装和命令详解
Apr 02 Python
python实现PID算法及测试的例子
Aug 08 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
python为QT程序添加图标的方法详解
Mar 09 Python
深入理解Python 多线程
Jun 16 Python
在CentOS7下安装Python3教程解析
Jul 09 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
Yii2框架使用计划任务的方法
2016/05/25 PHP
php字符串操作常见问题小结
2016/10/11 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
zbar解码二维码和条形码示例
2014/02/07 Python
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
Python入门必须知道的11个知识点
2018/03/21 Python
python 实现UTC时间加减的方法
2018/12/31 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
python随机生成库faker库api实例详解
2019/11/28 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
大专应届生个人的自我评价
2013/11/21 职场文书
村委会换届选举方案
2014/05/03 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
实训报告范文大全
2014/11/04 职场文书
捐款感谢信
2015/01/20 职场文书
看雷锋电影观后感
2015/06/10 职场文书
Go语言 详解net的tcp服务
2022/04/14 Golang
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers