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合并字典键值并去除重复元素的实例
Dec 18 Python
python实现redis三种cas事务操作
Dec 19 Python
python自动发邮件库yagmail的示例代码
Feb 23 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
python发送告警邮件脚本
Sep 17 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
kafka-python批量发送数据的实例
Dec 27 Python
利用python如何在前程无忧高效投递简历
May 07 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
简单了解python列表和元组的区别
May 14 Python
python爬虫爬取某网站视频的示例代码
Feb 20 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
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
实例讲解php实现多线程
2019/01/27 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
angular.js指令中的controller、compile与link函数的不同之处
2017/05/10 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
python中range()与xrange()用法分析
2016/09/21 Python
python中requests小技巧
2017/05/10 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python通过socketserver处理多个链接
2020/03/18 Python
工程力学硕士生的自我评价范文
2013/11/16 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
复兴之路观后感
2015/06/02 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书