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 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
Python实现一个Git日志统计分析的小工具
Dec 14 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
详解python校验SQL脚本命名规则
Mar 22 Python
Python搭建Keras CNN模型破解网站验证码的实现
Apr 07 Python
tensorflow指定CPU与GPU运算的方法实现
Apr 21 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
Pytorch 高效使用GPU的操作
Jun 27 Python
如何在mac版pycharm选择python版本
Jul 21 Python
python 爬取小说并下载的示例
Dec 07 Python
Python matplotlib绘制雷达图
Apr 13 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过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
js 异步处理进度条
2010/04/01 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
Python实现的彩票机选器实例
2015/06/17 Python
win与linux系统中python requests 安装
2016/12/04 Python
Python如何生成树形图案
2018/01/03 Python
Python编程实现线性回归和批量梯度下降法代码实例
2018/01/04 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
Python实现括号匹配方法详解
2020/02/10 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
linux下进程间通信的方式
2014/12/23 面试题
销售主管竞聘书
2014/03/31 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
党校学习党性分析材料
2014/12/19 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
2015年教研工作总结
2015/05/23 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
个人工作总结怎么写?
2019/04/09 职场文书