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中map和列表推导效率比较实例分析
Jun 17 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
python reduce 函数使用详解
Dec 05 Python
Python列表生成式与生成器操作示例
Aug 01 Python
pycharm安装和首次使用教程
Aug 27 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 Python
pytorch:实现简单的GAN示例(MNIST数据集)
Jan 10 Python
python thrift 实现 单端口多服务的过程
Jun 08 Python
Python 如何实现数据库表结构同步
Sep 29 Python
在终端启动Python时报错的解决方案
Nov 20 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
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
php实现推荐功能的简单实例
2019/09/29 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
python调用java的Webservice示例
2014/03/10 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
python 全文检索引擎详解
2017/04/25 Python
详解Python发送email的三种方式
2018/10/18 Python
通过cmd进入python的实例操作
2019/06/26 Python
python输入多行字符串的方法总结
2019/07/02 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
行政总监岗位职责
2013/12/05 职场文书
司机岗位职责
2015/02/04 职场文书
党员个人总结自评
2015/02/14 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技