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中使用插入排序算法的简单分析与代码示例
May 04 Python
python3+PyQt5泛型委托详解
Apr 24 Python
Python之list对应元素求和的方法
Jun 28 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
Python函数中不定长参数的写法
Feb 13 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Python中使用双下划线防止类属性被覆盖问题
Jun 27 Python
浅谈python 中类属性共享的问题
Jul 02 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
Python中Subprocess的不同函数解析
Dec 10 Python
Django框架安装及项目创建过程解析
Sep 14 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数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
具有时效性的php加密解密函数代码
2013/06/19 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
python 简单的调用有道翻译
2020/11/25 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
商务考察邀请函范文
2014/01/21 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
新手上路标语
2014/06/20 职场文书
2014年党员自我剖析材料
2014/10/07 职场文书
四年级小学生评语
2014/12/26 职场文书
青涩记忆观后感
2015/06/18 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL