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 相关文章推荐
Linux中Python 环境软件包安装步骤
Mar 31 Python
pytorch + visdom 处理简单分类问题的示例
Jun 04 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
Python3中的bytes和str类型详解
May 02 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
Pycharm和Idea支持的vim插件的方法
Feb 21 Python
python实现学生管理系统开发
Jul 24 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
opencv检测动态物体的实现
Jul 21 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
wordpress之wp-settings.php
2007/08/17 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
php中Ctype函数用法详解
2014/12/09 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
vue debug 二种方法
2018/09/16 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
python通过线程实现定时器timer的方法
2015/03/16 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
python实现视频压缩功能
2020/12/18 Python
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
大学生学业生涯规划
2014/01/05 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
社团活动总结怎么写
2014/06/30 职场文书
自我查摆剖析材料
2014/10/11 职场文书
教师三严三实心得体会
2014/10/11 职场文书
好好学习保证书
2015/02/26 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书