python 实现方阵的对角线遍历示例


Posted in Python onNovember 29, 2019

任务描述

对一个方阵矩阵,实现平行于主对角线方向的对角线元素遍历。

从矩阵索引入手:

[[ 1 2 3 4 5]
 [ 6 7 8 9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]]

上三角的索引遍历:

0 0
1 1
2 2
3 3
4 4

0 1
1 2
2 3
3 4

0 2
1 3
2 4

0 3
1 4

0 4

下三角的索引遍历:

1 0
2 1
3 2
4 3

2 0
3 1
4 2

3 0
4 1

4 0

代码

import numpy as np

A = np.arange(25)+1
A = np.mat(A.reshape([5, 5]))
print(A)

"""
[[ 1 2 3 4 5]
 [ 6 7 8 9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]]
"""

Num_element = A.shape[0]
c = int((Num_element-1)/2)
# print(c)


R = np.zeros_like(A)
# print(R)

for j in range(Num_element):
 print()
 i = 0
 # print(i, j)
 while np.max([i, j])<Num_element:
 print(i, j)
 if np.abs(i-j)%2==0:
 R[i, j] = A[c-int((j-i)/2), c+int((j-i)/2)]
 else:
 R[i, j] = (A[c-int((j-i-1)/2), c+int((j-i+1)/2)]+A[c-int((j-i+1)/2), c+int((j-i-1)/2)])/2

 i=i+1
 j=j+1

# print(R)

for k in range(1, Num_element):
 print()
 i = 0
 # print(i, j)
 while np.max([k, i])<Num_element:
 print(k, i)
 if np.abs(k-i)%2==0:
 R[k, i] = A[c-int((i-k)/2), c+int((i-k)/2)]
 else:
 R[k, i] = (A[c-int((i-k-1)/2), c+int((i-k+1)/2)]+A[c-int((i-k+1)/2), c+int((i-k-1)/2)])/2

 k=k+1
 i=i+1

print(R)

上述代码中对于每条对角线的所有元素执行相同的赋值操作。

考虑将其中重复的部分封装成函数:

def diag_opreation(k, i, Num_element, R, A):
 c = int((Num_element-1)/2)
 while np.max([k, i])<Num_element:
 print(k, i)
 if np.abs(k-i)%2==0:
 R[k, i] = A[c-int((i-k)/2), c+int((i-k)/2)]
 else:
 R[k, i] = (A[c-int((i-k-1)/2), c+int((i-k+1)/2)]+A[c-int((i-k+1)/2), c+int((i-k-1)/2)])/2
 
 k=k+1
 i=i+1
 return R

则代码变为:

for j in range(Num_element):
 print()
 i = 0
 # print(i, j)
 R = diag_opreation(i, j, Num_element, R, A)

# print(R)

for k in range(1, Num_element):
 print()
 i = 0
 # print(i, j)
 R = diag_opreation(k, i, Num_element, R, A)

print(R)

输出结果为:

[[13 11 9 7 5]
 [15 13 11 9 7]
 [17 15 13 11 9]
 [19 17 15 13 11]
 [21 19 17 15 13]]

以上这篇python 实现方阵的对角线遍历示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python数据类型学习笔记
Jan 13 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
python 重定向获取真实url的方法
May 11 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
Django框架搭建的简易图书信息网站案例
May 25 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
Python中Unittest框架的具体使用
Aug 27 Python
Python中turtle库的使用实例
Sep 09 Python
python如何建立全零数组
Jul 19 Python
Python初识逻辑与if语句及用法大全
Aug 07 Python
python运行脚本文件的三种方法实例
Jun 25 Python
python 实现一个反向单位矩阵示例
Nov 29 #Python
python 实现矩阵填充0的例子
Nov 29 #Python
python循环嵌套的多种使用方法解析
Nov 29 #Python
python写一个随机点名软件的实例
Nov 28 #Python
关于Python-faker的函数效果一览
Nov 28 #Python
python 监测内存和cpu的使用率实例
Nov 28 #Python
python随机生成库faker库api实例详解
Nov 28 #Python
You might like
论坛头像随机变换代码
2006/10/09 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
jquery.validate使用攻略 第二部
2010/07/01 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
jQuery中prepend()方法使用详解
2015/08/11 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
python实现清屏的方法
2015/04/30 Python
Python编程入门的一些基本知识
2015/05/13 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
python 字典操作提取key,value的方法
2019/06/26 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
领导干部廉政承诺书
2014/03/27 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
工人先锋号申报材料
2014/12/29 职场文书
紧急迫降观后感
2015/06/15 职场文书
实践论读书笔记
2015/06/29 职场文书
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers