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脚本实现下载合并SAE日志
Feb 10 Python
对于Python异常处理慎用“except:pass”建议
Apr 02 Python
初步剖析C语言编程中的结构体
Jan 16 Python
Python表示矩阵的方法分析
May 26 Python
Python中的id()函数指的什么
Oct 17 Python
python3处理含有中文的url方法
May 10 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
解决Python二维数组赋值问题
Nov 28 Python
Python如何爬取qq音乐歌词到本地
Jun 01 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
如何表示python中的相对路径
Jul 08 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
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
用js重建星际争霸
2006/12/22 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
详解python的ORM中Pony用法
2018/02/09 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
Python字典取键、值对的方法步骤
2020/09/30 Python
写给学生的新学期寄语
2014/01/18 职场文书
公司司机岗位职责
2014/02/07 职场文书
2014年班主任工作总结
2014/11/08 职场文书
2014年药房工作总结
2014/11/22 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
创业计划书之酒店
2019/08/30 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫
MySQL分区路径子分区再分区
2022/04/13 MySQL
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript