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基础入门之seed()方法的使用
May 15 Python
python实现在控制台输入密码不显示的方法
Jul 02 Python
python实现简易通讯录修改版
Mar 13 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
解决在pycharm中显示额外的 figure 窗口问题
Jan 15 Python
python和c语言的主要区别总结
Jul 07 Python
简单了解python的内存管理机制
Jul 08 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
python_mask_array的用法
Feb 18 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
Tensorflow与Keras自适应使用显存方式
Jun 22 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
phpMyadmin 用户权限中英对照
2010/04/02 PHP
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
php无限极分类实现的两种解决方法
2013/04/28 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
php使用session二维数组实例
2014/11/06 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
php实现将Session写入数据库
2015/07/26 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
JavaScript+html5 canvas绘制渐变区域完整实例
2016/01/26 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
Spy++的使用方法及下载教程
2021/01/29 Python
HTML5 视频播放(video),JavaScript控制视频的实例代码
2018/10/08 HTML / CSS
小学生元旦感言
2014/02/26 职场文书
购房意向书
2014/04/01 职场文书
北京奥运会主题口号
2014/06/13 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
平安建设汇报材料
2014/12/29 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
Python sklearn分类决策树方法详解
2022/09/23 Python