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使用saltstack生成服务器资产清单
Mar 01 Python
Django 连接sql server数据库的方法
Jun 30 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
python实现连续图文识别
Dec 18 Python
Python和Go语言的区别总结
Feb 20 Python
Python玩转加密的技巧【推荐】
May 13 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 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
德劲1102收音机的打理维修案例
2021/03/02 无线电
PHP扩展程序实现守护进程
2015/04/16 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
理解Javascript闭包
2013/11/01 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
Python中数字以及算数运算符的相关使用
2015/10/12 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
超简单的Python HTTP服务
2019/07/22 Python
Python流程控制常用工具详解
2020/02/24 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
python lambda的使用详解
2021/02/26 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
元旦晚会邀请函
2014/01/27 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
驻村工作简报
2015/07/20 职场文书
敬老院活动感想
2015/08/07 职场文书
清洁工工作总结
2015/08/11 职场文书
校园安全教育心得体会
2016/01/15 职场文书
Python中Permission denied的解决方案
2021/04/02 Python